11

testSuite在 Python 中有几个testCases.

如果一个testCase失败,testSuite继续下一个testCase。我希望能够testSuitetestCase失败时停止,或者能够决定是否testSuite应该继续或停止。

4

6 回答 6

15

从 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

于 2011-07-26T10:35:06.033 回答
3

似乎没有一个答案涉及您问题的这一部分:

...能够决定 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)
于 2020-01-28T19:36:42.813 回答
2

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

例子:

if __name__ == '__main__':
    unittest.main(failfast=True)
于 2019-11-07T15:18:47.060 回答
1

你真的在做单元测试吗?还是其他东西的系统测试?如果是后者,你可能会对我的基于 Python 的测试框架感兴趣。它的特点之一就是这个。您可以定义测试用例依赖项,套件将跳过依赖项失败的测试。它还内置了对 selenium 和 webdriver 的支持。但是,设置起来并不容易。目前正在开发中,但大部分都可以使用。在 Linux 上运行。

于 2011-07-25T09:18:30.667 回答
1

用鼻子运行测试并使用 -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 页面,显示测试运行已触及代码中的哪些行

所有这些的组合通常会给我我想要的东西。

于 2011-07-25T09:35:57.703 回答
-3

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

于 2011-07-25T09:12:03.390 回答