Прокси-эквивалент в Python3 unittest - PullRequest
1 голос
/ 29 мая 2019

Я тестирую скрипт, который выглядит примерно так:

import arcpy

Class A:
    function go(x, y, z):
        arcpy.dothing(y,x,z['attr'])

Я хочу написать модульный тест в python 3.6.6, который передает фиктивные параметры и проверяет, что они правильно преобразованы и переданы вarcpy.dothing метод.Я использовал proxyquire в узле для этого, но в Python я не могу понять это.В частности, @patch не позволяет захватывать входные аргументы.

1 Ответ

1 голос
/ 30 мая 2019

Итак, я понял это после долгих экспериментов. Вот что я закончил:

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')
...