首先,我的Python代码:
def terminate(code, message):
if code in exit_codes:
if not isinstance(message, type(None)) and not message == '':
sys.stderr.write(message)
sys.exit(exit_codes[code])
else:
error = 'ERROR: a termination request was received with an invalid exit code.\n'
error += 'This is mostly likely a developer/application problem.\n'
terminate('BAD_CODE', error)
我有一个全局定义的退出代码字典字典,对应于赋予sys.exit()
的数字。如果code
参数是有效的退出代码,则使用该代码的整数值作为参数调用sys.exit()
。否则,terminate()
以BAD_CODE
字典条目递归调用,该条目保证存在,然后最终调用sys.exit()
。
无论哪种方式,sys.exit()
最终都被调用,因此Exception类型是SystemExit。我如何编写pytest的单元测试,这样我不仅检查SystemExit实际上是否被引发,而且发送给sys.exit()
的整数值是它应该是什么?
我已经达到了典型的with raises(SystemExit) as exc_info:
上下文管理器行,但我仍然坚持使用整数值检查部分。