我testSuite
在 Python 中有几个testCases
.
如果一个testCase
失败,testSuite
继续下一个testCase
。我希望能够testSuite
在testCase
失败时停止,或者能够决定是否testSuite
应该继续或停止。
我testSuite
在 Python 中有几个testCases
.
如果一个testCase
失败,testSuite
继续下一个testCase
。我希望能够testSuite
在testCase
失败时停止,或者能够决定是否testSuite
应该继续或停止。
从 Python 2.7 开始,unittest
支持failfast
选项。它可以通过命令行指定:
python -m unittest -f test_module
或者在使用脚本时:
>>> from unittest import main
>>> main(module='test_module', failfast=True)
setuptools
不幸的是,当您使用and时,我还没有找到如何指定此选项setup.py
。
似乎没有一个答案涉及您问题的这一部分:
...能够决定 testSuite 应该继续还是停止。
run()
您可以在您的类中覆盖该方法TestCase
并调用该TestResult.stop()
方法以TestSuite
向停止运行测试发出信号。
class MyTestCase(unittest.TestCase):
def run(self, result=None):
if stop_test_condition():
result.stop()
return
super().run(result=result)
如果 1 在您的测试类中失败,使用failfast=True
它将停止运行所有测试
例子:
if __name__ == '__main__':
unittest.main(failfast=True)
你真的在做单元测试吗?还是其他东西的系统测试?如果是后者,你可能会对我的基于 Python 的测试框架感兴趣。它的特点之一就是这个。您可以定义测试用例依赖项,套件将跳过依赖项失败的测试。它还内置了对 selenium 和 webdriver 的支持。但是,设置起来并不容易。目前正在开发中,但大部分都可以使用。在 Linux 上运行。
用鼻子运行测试并使用 -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
为您提供一个彩色的 html 页面,显示测试运行已触及代码中的哪些行
所有这些的组合通常会给我我想要的东西。
您可以使用 sys.exit() 在测试用例中的任何位置关闭 python 解释器。