Вот пример сценария, который проверяет предварительное условие в самом первом тестовом примере, и я намерен прервать сценарий, если предварительное условие не выполнено.
#!/usr/bin/python
import unittest
import sys
class TestMyScript(unittest.TestCase):
def test_000_prerequisite(self):
a = 0
if not a:
sys.exit()
return
def test_001_test1(self):
print "Inside test 1"
return
def test_002_test2(self):
print "Inside test 2"
return
if __name__ == "__main__":
unittest.main()
Однако sys.exit() выходит только из отдельного тестового набора. Это не завершает весь сценарий.
Я понимаю, что unittest обрабатывает каждый тестовый пример индивидуально, поэтому все исключения, вызванные любым тестовым сценарием, обрабатываются исполнителем теста и переходят к следующему тестовому сценарию.
Но я хочу, чтобы скрипт убил сам себя, как мне это сделать?
Вот вывод моего скрипта:
./temp.py
EInside test 1
.Inside test 2
.
======================================================================
ERROR: test_000_prerequisite (__main__.TestMyScript)
----------------------------------------------------------------------
Traceback (most recent call last):
File "./temp.py", line 9, in test_000_prerequisite
sys.exit()
SystemExit
----------------------------------------------------------------------
Ran 3 tests in 0.000s
FAILED (errors=1)
Я предполагаю, что мне нужно возиться с TestRunner и убивать скрипт, если тестовый случай возвращает какой-то сигнал. Но не уверен, как на самом деле этого добиться.