Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如果测试用例发现错误,请停止testsuite_Python_Unit Testing_Testcase_Test Suite - Fatal编程技术网

Python 如果测试用例发现错误,请停止testsuite

Python 如果测试用例发现错误,请停止testsuite,python,unit-testing,testcase,test-suite,Python,Unit Testing,Testcase,Test Suite,我有一个Python中的testSuite,其中包含几个testcase 如果testCase失败,testSuite继续执行下一个testCase。我希望能够在测试用例失败时停止测试套件,或者能够决定测试套件应该继续还是停止。您可以使用sys.exit()在测试用例中的任意点关闭python解释器。您真的在进行单元测试吗?还是其他的系统测试?如果是后者,您可能会对我的产品感兴趣。它的一个特点就是这样。您可以定义测试用例依赖项,套件将跳过依赖项失败的测试。它还内置了对selenium和webdr

我有一个Python中的
testSuite
,其中包含几个
testcase


如果
testCase
失败,
testSuite
继续执行下一个
testCase
。我希望能够在
测试用例失败时停止
测试套件
,或者能够决定
测试套件
应该继续还是停止。

您可以使用sys.exit()在测试用例中的任意点关闭python解释器。

您真的在进行单元测试吗?还是其他的系统测试?如果是后者,您可能会对我的产品感兴趣。它的一个特点就是这样。您可以定义测试用例依赖项,套件将跳过依赖项失败的测试。它还内置了对selenium和webdriver的支持。然而,设置起来并不容易。目前正在开发中,但大部分工作正常。在Linux上运行

使用nose运行测试并使用-x标志。再加上--failed标志,应该可以满足您的所有需求。因此,在项目运行的顶层

nosetests -x # with -v for verbose and -s to no capture stdout
或者你也可以和我一起跑步

nosetests --failed
这将只重新运行测试套件中失败的测试

其他有用的标志:

nosetests --pdb-failure --pdb
在测试失败或出错时将您放入调试器

nosetests --with-coverage --cover-package=<your package name> --cover-html
nosetests--覆盖范围--cover-package=--cover-html
为您提供一个彩色html页面,显示测试运行已触及代码中的哪些行


所有这些的结合通常会给我我想要的。

自Python 2.7以来,
unittest
支持
failfast
选项。它可以由命令行指定:

python -m unittest -f test_module
或者在使用脚本时:

>>> from unittest import main
>>> main(module='test_module', failfast=True)

不幸的是,当您使用
setuptools
setup.py

使用
failfast=True
测试类中的1失败时,它将停止运行所有测试

例如:

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

所有答案似乎都没有触及你问题的这一部分:

。。。能够决定testSuite应该继续还是停止

您可以在
TestCase
类中重写
run()
方法,并调用
TestResult.stop()
方法向
TestSuite
发出停止运行测试的信号

class MyTestCase(unittest.TestCase):
    def run(self, result=None):
        if stop_test_condition():
            result.stop()
            return
        super().run(result=result)

您使用的是什么单元测试框架?因为您的单元测试应该是独立的,所以这个要求看起来很奇怪。为什么不执行所有的单元测试,这样您就可以一次看到所有失败的测试?谢谢Keith,但我不知道如何使用您基于Python的测试框架来解决我的问题。我可以不使用nose也这样做吗?我不确定-我知道unittest2带来了很多新的好处,但是我还没有真正使用它们我想在运行测试套件时关闭测试套件中的python解释器发生错误我认为这不是真的,
unittest
似乎捕捉到了
sys.exit
并在尝试此解决方案时继续-1:non
sys.exit()
sys.\u exit()
实际停止我的测试。对实际问题的回答很好。我能够将对super().run()的调用与setUp()引发的自定义异常的处理程序相结合。(出于某些原因,例外情况必须是KeyboardInterrupt的子类。)