相关疑难解决方法(0)

如何使用unittest停止测试或setUp内的所有测试?

我正在扩展python 2.7 unittest框架来进行一些功能测试.我想做的一件事就是阻止所有测试在测试内部和setUpClass()方法内部运行.有时如果测试失败,程序就会破坏,不再有任何用处继续测试,所以我想阻止测试运行.

我注意到TestResult有一个shouldStop属性和一个stop()方法,但我不确定如何访问测试内部.

有没有人有任何想法?有没有更好的办法?

python testing automated-tests functional-testing python-unittest

19
推荐指数
2
解决办法
1万
查看次数

如何在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()
Run Code Online (Sandbox Code Playgroud)

但是,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)
Run Code Online (Sandbox Code Playgroud)

我的猜测是,如果测试用例返回一些信号,我必须乱用TestRunner并终止脚本.但不确定如何真正实现它.

解:

如果测试用例发现错误,我在Stop …

python unit-testing python-unittest

13
推荐指数
1
解决办法
2685
查看次数

Python unittest:如果特定测试失败,则取消所有测试

unittest用来测试我的Flask应用程序,并nose实际运行测试.

我的第一组测试是确保测试环境干净并阻止在Flask应用程序配置的数据库上运行测试.我确信我已经干净地设置了测试环境,但是如果没有运行所有测试,我想要一些保证.

import unittest

class MyTestCase(unittest.TestCase):
    def setUp(self):
        # set some stuff up
        pass

    def tearDown(self):
        # do the teardown
        pass

class TestEnvironmentTest(MyTestCase):
    def test_environment_is_clean(self):
        # A failing test
        assert 0 == 1

class SomeOtherTest(MyTestCase):
    def test_foo(self):
        # A passing test
        assert 1 == 1
Run Code Online (Sandbox Code Playgroud)

如果它失败了,我想要TestEnvironmentTest引起unittestnose保释,并阻止SomeOtherTest和进行任何进一步的测试.是否存在一些内置的方法unittest(首选)或nose允许这样做?

python unit-testing nose

8
推荐指数
1
解决办法
9358
查看次数