Python:在单元测试中处理sys.exit?

Python:在单元测试中处理sys.exit?,python,unit-testing,Python,Unit Testing,我有一个管理命令,可以做一些事情,或者可以返回一个sys.exit() 在我的单元测试中,我试图处理第二种情况,如下所示: with self.assertRaises(SystemExit) as cm: call_command('geocode_practices', *args, **opts) self.assertEqual(cm.exception, 1) 但这给了我: AssertionError: None != 1 我做错了什么 另外,处理

我有一个管理命令,可以做一些事情,或者可以返回一个
sys.exit()

在我的单元测试中,我试图处理第二种情况,如下所示:

    with self.assertRaises(SystemExit) as cm:
        call_command('geocode_practices', *args, **opts)
    self.assertEqual(cm.exception, 1)
但这给了我:

AssertionError: None != 1
我做错了什么


另外,处理不同场景的最佳方式是什么?目前,如果脚本不退出,我的测试将失败

显然,
with
块中的代码不会引发异常。请注意,
sys.exit()
只会引发一个
SystemExit
异常


即使是这样,异常也不会比较为1。如果不是
None
,则
cm.exception
属性包含异常实例,而不是一个数字。

此测试是针对“do stuff”案例还是针对
sys.exit()
案例?这个命令是否应该调用
sys.exit()
?管理命令应该可以从其他代码调用,因此引发
SystemExit
确实是个坏主意。@brunodesshuilliers谢谢,那么我应该如何处理管理命令的退出?(我想在没有网络连接的情况下优雅地失败。)@Richard奇怪的是,如果没有引发
SystemExit
,测试甚至不应该到达对
assertEqual
的调用。