如何在unittest测试用例中退出脚本

时间:2015-04-22 00:15:36

标签: python unit-testing python-unittest

这是一个示例脚本,它检查第一个测试用例中的前置条件,我的意图是在不满足前置条件的情况下中止脚本。

#!/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并终止脚本。但不确定如何真正实现它。

1 个答案:

答案 0 :(得分:5)

以下是答案:

Stop testsuite if a testcase find an error

以下是调用unittest.main()时需要进行的更改。 failfast关键字参数在第一次失败后停止脚本。

if __name__ == "__main__":
    unittest.main(failfast=True)

P.S。 failfast关键字参数仅适用于python 2.7 +

p.p.s。您也可以在failfast

上使用unittest.TextTestRunner()