是否可以测试使用"os._exit()"的函数?



我想测试函数在失败时执行os._exit(2)。我已经看到许多使用SystemExitsys.exit()的解决方案。我已经阅读了 Python3 和 Python2 文档,似乎os._exit()不使用SystemExit

尽管如此,我已经尝试过这个,以防万一是对我这边文档的误解,但它只是退出了鼻子测试,甚至不是测试失败:

make: *** [test] Error 2

这可能是由于函数调用os._exit(2)

os.system()返回值包含更高 8 位的退出代码,因此您可以通过以下方式检查外部脚本的退出代码:

import os
assert os.system('python script.py') >> 8 == 2

你也可以用sys.exit()来模拟os._exit()

import os, sys
import script
os._exit = sys.exit
script.tested_method()  # raises SystemExit

unittest.mock.MagicMock对象可以轻松简单地检查函数是否已被调用,而无需它们执行其默认行为。

from unittest import mock
import os
def funcToTest():
os.exit(2)
def test_func():
os._exit = mock.MagicMock()
funcToTest()
assert os._exit.called

最新更新