Почему python ничего не выполняет после ' unittest.основной()' выполняется?


Итак, предположим, что у меня есть следующее:

import unittest

class MyTests(unittest.TestCase):

  def test001(self):
    print 'This is test001'

  def test002(self):
    print 'This is test002'

if __name__ == '__main__':
  unittest.main()
  print 'Done'

И вывод:

>> This is test001
>> This is test002
>> ----------------------------------------------------------------------
>> Ran 2 tests in 0.001s

>> OK

И мне было интересно, почему не удается напечатать "сделано" (или все, что приходит после)?

1 6

1 ответ:

Передайте exit=False вызову unittest.main() (документация):

unittest.main(exit=False)

Вот что я получаю на консоли:

$ python test.py
This is test001
.This is test002
.
----------------------------------------------------------------------
Ran 2 tests in 0.000s

OK
Done

К вашему сведению, под капотом unittest TestProgram.runTests() вызывает sys.exit(), если значение exit равно True (что по умолчанию):

def runTests(self):
    ...
    if self.exit:
        sys.exit(not self.result.wasSuccessful())