我试图在main函数中构造类,以便我可以测试main并断言用特定数据初始化类。但是主函数仍然没有获取模拟的实例。如何将模拟的实例传递给main。
def test_main():
magic_b = MagicMock(spec_set=Benchmark, wraps=Benchmark)
with use_mocked("__new__", DataStream, magic_b):
main.main()
magic_b.assert_called_once_with() # fails
这是修补实用程序,以确保main传递模拟引用。我可能会对我对其功能的理解感到困惑。
import benchmark.Benchmark
def main():
b = benchmark.Benchmark() # <- this is not the mocked instance
...
在主模块中,我有一个主要方法定义为...
{{1}}
答案 0 :(得分:0)
我依赖于unittest.mock中的相同补丁实用程序,而只是在我的测试中以装饰器的形式使用它。 patch()
现在在Benchmark类中传递,主要导入(在主要版本而非基准模块中进行修补非常重要,因为它自己即不修补benchmark.Benchmark )。主要模块保持不变,测试现在通过。
import main
@patch("main.Benchmark")
# b here is a ref to MagicMock class mocking Benchmark;
# it is substituted into the execution of main module,
# patch provides it as a param so you can assert against it.
def test_main(b):
main.main()
b.assert_called_once_with()