Python 模拟主__
我希望通过测试确保: -无法导入应用程序 -该应用程序可以作为实际应用程序启动(即:pythonsrc.py) 我对此很感兴趣,为什么以下方法不起作用: src.pyPython 模拟主__,python,mocking,unit-testing,Python,Mocking,Unit Testing,我希望通过测试确保: -无法导入应用程序 -该应用程序可以作为实际应用程序启动(即:pythonsrc.py) 我对此很感兴趣,为什么以下方法不起作用: src.py class A: def x(self): print('this is x') if __name__ == '__main__': A().x() test.py(代码段) 这个测试失败了。。。为什么?因为导入时模块的名称是src,而不是\uuuu main\uuuu 最简单的解决方案是将代码移动到函数中: de
class A:
def x(self):
print('this is x')
if __name__ == '__main__':
A().x()
test.py(代码段)
这个测试失败了。。。为什么?因为导入时模块的名称是
src
,而不是\uuuu main\uuuu
最简单的解决方案是将代码移动到函数中:
def main():
A().x()
if __name__ == '__main__':
main()
在测试中,您将调用src.main()
要测试模块是否不可导入,不需要使用模拟 看 只需检查导入od模块是否抛出错误
with self.assertRaises(...):
...
这并不能确保仅当应用程序作为脚本(python src.py)调用时才调用main(),因为您是正确的。您还可以确保在调用
main()
之前未调用它。您说过要确保无法导入模块。这可以通过我的代码进行测试。请更准确地回答您的问题,并给出有意义的评论,而不是“那不是真的……”……如果模块不可导入,Python将引发错误。这就是我猜你想测试的。你如何确保模块不可导入?!?!?!还有…如果你能保证。。。它并没有说源实际上是在main中调用的。。。
@mock.patch('src.A.x')
def test_main(self, mock_x):
import src
src.main()
mock_x.assert_any_call()
with self.assertRaises(...):
...