我想确保测试: - 无法导入应用程序 - 应用程序可以作为一个真正的应用程序启动(即:python src.py)
我对此感兴趣,为什么以下不起作用:
src.py
class A:
def x(self):
print('this is x')
if __name__ == '__main__':
A().x()
test.py(摘录)
class Test(unittest.TestCase):
@mock.patch('src.A.x')
def test_main(self, mock_x):
import src
mock_x.assert_any_call()
这个测试失败了......为什么?
答案 0 :(得分:1)
因为导入时模块的名称是src
,而不是__main__
。
最简单的解决方案是将该代码移动到一个函数中:
def main():
A().x()
if __name__ == '__main__':
main()
在测试中,您将调用src.main()
@mock.patch('src.A.x')
def test_main(self, mock_x):
import src
src.main()
mock_x.assert_any_call()
答案 1 :(得分:0)