Я тестирую скрипт, который выглядит примерно так:
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')