【发布时间】:2017-12-24 09:34:16
【问题描述】:
我想测试一个函数在失败时执行os._exit(2)。我已经看到了许多使用sys.exit() 使用SystemExit 的解决方案。我已经阅读了Python3 和Python2 文档,似乎os._exit() 没有使用SystemExit
尽管如此,我已经尝试过this,以防我对文档有误解,但它只是退出了nosetest,甚至不是测试失败:
make: *** [test] Error 2
这可能是由于函数调用os._exit(2)
【问题讨论】:
-
万不得已,如果找不到更好的解决方案,只需覆盖
os._exit方法:repl.it/J82h/0 -
您只是想测试函数调用
os._exit(2),还是要测试实际退出?如果是前者,您可以按照 bakatrouble 建议的方式模拟该功能。但如果是后者,您可能必须编写一个单独的程序来调用该函数,并使用os.system或其他方式测试调用该程序以验证它是否使用该代码退出。 -
我要测试的函数是一个自定义错误函数:一旦调用,它会记录错误消息,然后调用
os._exit(2)。我想测试日志记录部分和退出部分。因为我只应该测试这个模块,所以我不能真正接触代码。 -
附带说明:如果您在函数中使用
os._exit,那么您的架构可能有问题。为什么不能引发在顶层捕获的异常?在某个时候杀死某个进程会适得其反,因为您没有最终确定状态。 -
正如我所说,我只是一个测试人员,我不应该接触被测试的代码。此外,这个项目中使用了叉子,我读过 os._exit() 经常与叉子一起使用。
标签: python unit-testing python-unittest nose