如何在python notest中绕过“sys.exit()”?

2024-06-16 11:30:25 发布

您现在位置:Python中文网/ 问答频道 /正文

当遇到“sys.exit()”时,python nosetest似乎将退出,并且对这个内置的模拟不起作用。谢谢你的建议。


Tags: sysexit内置建议nosetest
3条回答

您可以尝试捕获SystemExit异常。当有人调用sys.exit()时,它会被引发。

with self.assertRaises(SystemExit):
  myFunctionThatSometimesCallsSysExit()

如果使用mock修补sys.exit,则可能修补不正确。

这个小测试对我来说很好:

import sys
from mock import patch

def myfunction():
    sys.exit(1)

def test_myfunction():
    with patch('foo.sys.exit') as exit_mock:
        myfunction()
        assert exit_mock.called

调用方式:

nosetests foo.py

输出:

.
----------------------------------------------------------------------
Ran 1 test in 0.001s

OK
import sys
sys.exit = lambda *x: None

请记住,程序可能合理地预期在sys.exit()之后不会继续,因此修补它实际上可能没有帮助。。。

相关问题 更多 >