用Python模拟整个类

时间:2017-08-07 18:12:38

标签: python unit-testing mocking patch

看起来很容易,但我无法完成以下工作。我在以下帖子中寻找答案,但虽然相关,但不包括这个确切的情况。

我正在测试以下课程:

class A:
    def __init__(self, x, y):
        self.api_service = APIService(x, y)
    def my_method():
        pass

在测试用例中,我想测试my_method,并想要模拟APIServicemy_method中完全没有使用它。我该怎么做/补丁?

不起作用的事情:

@patch('path.to.APIService')
class APITestCase(TestCase):
    def test_that_my_method_works(self, _):
        a = A(1, 2)
        a.my_method
        # Still calls real APIService

@patch.object(APIService, '__init__', return_value=Mock())
class APITestCase(TestCase):
    def test_that_my_method_works(self, _):
        a = A(1, 2)
        a.my_method
        # TypeError: __init__() should return None, not 'Mock'


@patch.object(APIService, '__init__', return_value=None)
class APITestCase(TestCase):
    def test_that_my_method_works(self, _):
        a = A(1, 2)
        a.my_method
        # Still calls real APIService

0 个答案:

没有答案