Python Glossary English

все 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Сообщить о неточности