Python3 单元测试中的 Proxyquire 等价物
Proxyquire equivalent in Python3 unittest
我正在测试一个看起来像这样的脚本:
import arcpy
Class A:
function go(x, y, z):
arcpy.dothing(y,x,z['attr'])
我想在 python 3.6.6
中编写单元测试,传入虚拟参数并验证它们是否正确转换并传递给 arcpy.dothing
方法。为此,我在节点中使用了 proxyquire,但在 python 中我无法弄清楚。特别是 @patch
似乎不允许捕获输入参数。
经过大量试验,我发现了这一点。这是我最终得到的结果:
import unittest
from a import A
from unittest.mock import patch
class Test_ATest(unittest.TestCase):
@patch('a.arcpy.dothing')
def test_dothing(self, dothing):
d = {"attr": "c"}
obj = A()
obj._go(1,2,d)
dothing.assert_called_with(2,1,'c')
我正在测试一个看起来像这样的脚本:
import arcpy
Class A:
function go(x, y, z):
arcpy.dothing(y,x,z['attr'])
我想在 python 3.6.6
中编写单元测试,传入虚拟参数并验证它们是否正确转换并传递给 arcpy.dothing
方法。为此,我在节点中使用了 proxyquire,但在 python 中我无法弄清楚。特别是 @patch
似乎不允许捕获输入参数。
经过大量试验,我发现了这一点。这是我最终得到的结果:
import unittest
from a import A
from unittest.mock import patch
class Test_ATest(unittest.TestCase):
@patch('a.arcpy.dothing')
def test_dothing(self, dothing):
d = {"attr": "c"}
obj = A()
obj._go(1,2,d)
dothing.assert_called_with(2,1,'c')