Как обойти " sys.exit () " в python nosetest?
кажется, что python nosetest завершит работу при обнаружении " sys.exit ()", и издевательство над этим встроенным не работает. Спасибо за предложения.
4 ответов
вы можете попробовать поймать SystemExit исключения. Он поднимается, когда кто-то зовет sys.exit()
.
with self.assertRaises(SystemExit):
myFunctionThatSometimesCallsSysExit()
import sys
sys.exit = lambda *x: None
имейте в виду, что программы могут рассчитывать не продолжать после 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
вызывается с:
nosetests foo.py
выходы:
.
----------------------------------------------------------------------
Ran 1 test in 0.001s
OK
Это пример unittest
основы.
with self.assertRaises(SystemExit) as cm:
my_function_that_uses_sys_exit()
self.assertEqual(cm.exception.code, expected_return_code)