看起来很容易,但我无法完成以下工作。我在以下帖子中寻找答案,但虽然相关,但不包括这个确切的情况。
我正在测试以下课程:
class A:
def __init__(self, x, y):
self.api_service = APIService(x, y)
def my_method():
pass
在测试用例中,我想测试my_method
,并想要模拟APIService
,my_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