все Python 3unittestфункция
unittest.installHandler()
прерывание по Ctrl+C
Ставит обработчик Ctrl+C для тестов: первое нажатие даёт текущему тесту доиграть и завершает прогон с отчётом, второе прерывает сразу.
Синтаксис
unittest.installHandler()
Без него Ctrl+C посреди долгого прогона бросает KeyboardInterrupt, и итог не печатается вовсе. Остановить корректно обработчик может только результаты, зарегистрированные через registerResult; TextTestRunner и unittest.main регистрируют свои сами. Из командной строки то же включает флаг -c (--catch), в unittest.main — catchbreak=True.
Примеры
import os
import signal
import unittest
class Tests(unittest.TestCase):
def test_1_press_ctrl_c(self):
os.kill(os.getpid(), signal.SIGINT) # имитация Ctrl+C
def test_2_never_runs(self):
pass
unittest.installHandler()
result = unittest.TestResult()
unittest.registerResult(result)
unittest.TestLoader().loadTestsFromTestCase(Tests).run(result)
print(result.testsRun, result.shouldStop) # → 1 True
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности