示例abc.py:
from pack.def import Def
class Abc(object):
def f(self):
return Def().response()
示例test_abc.py
from unittest import mock, TestCase
from pack.abc import Abc
class TestAbc(TestCase):
@mock.patch('pack.def.Def')
def test_f(self, mock_def):
responses = ['response1', 'response2', 'response3']
mock_def.return_value.response.return_value = responses
assert responses == Abc().f()
我认为模拟def已被修补,但是我做错了事,有人知道我做错了吗?
答案 0 :(得分:0)
您必须模拟您正在使用的对象。您正在使用 abc 模块中属于 pack.def 软件包的Def
。当您为Abc
类编写测试并想要模拟Def
调用时,必须模拟在 abc 中导入的Def
,而不是从原始模块中导入的@mock.patch('pack.abc.Def')
。
使用@mock.patch('pack.def.Def')
代替grep
。