Python 如果测试用例发现错误,请停止testsuite
我有一个Python中的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
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:nonsys.exit()
或sys.\u exit()
实际停止我的测试。对实际问题的回答很好。我能够将对super().run()的调用与setUp()引发的自定义异常的处理程序相结合。(出于某些原因,例外情况必须是KeyboardInterrupt的子类。)