我正在尝试为我的单元测试创建生成器方法的模拟版本。设置返回值很简单:
patcher = unittest.mock.patch.multiple("__main__.MyClass",
method_one=DEFAULT,
...
)
patcher.start()
MyClass.method_one.return_value = my_mock_gen(some_params)
但是这只会工作一次并且每次都必须重新设置:
for value in my_obj.method_one(some_params):
# do stuff with value
my_obj.method_one.reset_mock() # doesn't work with `yield from` as well
另外,我无法根据 some_params
生成模拟值。是否有一种我缺少的处理这种情况的首选方法?
最佳答案
如果你想在调用 mock 时运行一个函数,那就是 side_effect
,而不是 return_value
:
MyClass.method_one.side_effect = my_mock_gen
关于python - 在模拟中修补生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48546000/