我正在尝试用Python编写测试覆盖我的一个类。
该类有一个被注入进去的依赖项。
class UnderTest:
def __init__(self, dependency):
self.dependency = dependency
我并不关心依赖的内部细节,希望能够对其进行模拟。
因此,在我的测试中实例化该类,并注入依赖项:
dependency = MagicMock()
dependency.some_func = MagicMock(return_value='blue')
under_test = UnderTest(dependency)
后来当我想要测试UnderTest
类时,我希望依赖根据传递给它的参数返回不同的值。因此,在被测试的代码中,我可能会有像这样的内容:
value = dependency.some_func('a')
但是我也希望当使用不同的值调用依赖时,它能返回其他内容。
value = dependency.some_func('b')
理想情况下(我在其他框架中见过这种功能),我希望能够配置虚拟数据返回不同的值,例如(我希望它能够实现的方式):
dependency.some_func = MagicMock([
{'called_with': 'a', 'return_value': 'blue'},
{'called_with': 'b', 'return_value': 'green'}
])