Hai*_*ang 13 python mocking nose
看来,蟒蛇nosetest会遇到当"sys.exit()"退出,而这个内置的嘲讽不工作.谢谢你的建议.
kic*_*hik 28
您可以尝试捕获SystemExit异常.当有人打电话时,它会被提出sys.exit().
with self.assertRaises(SystemExit):
myFunctionThatSometimesCallsSysExit()
Run Code Online (Sandbox Code Playgroud)
import sys
sys.exit = lambda *x: None
Run Code Online (Sandbox Code Playgroud)
请记住,程序可能合理地期望不会继续sys.exit(),所以修补它可能实际上没有帮助......
如果你正在使用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
Run Code Online (Sandbox Code Playgroud)
调用:
nosetests foo.py
Run Code Online (Sandbox Code Playgroud)
输出:
.
----------------------------------------------------------------------
Ran 1 test in 0.001s
OK
Run Code Online (Sandbox Code Playgroud)
这是unittest框架中的一个例子。
with self.assertRaises(SystemExit) as cm:
my_function_that_uses_sys_exit()
self.assertEqual(cm.exception.code, expected_return_code)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9434 次 |
| 最近记录: |