如何仅运行测试套件中添加的测试用例而不是该类中可用的所有测试用例?

时间:2017-06-07 17:46:16

标签: python python-unittest test-suite

我写了一个测试套件。

myTestsuite.py

import unittest
from myTestCase2 import MyTestCase2
from prime_num_validation import Prime_Num_Validation

def my_test_suite():
    suite = unittest.TestSuite()
    suite.addTest(MyTestCase2('test_greaterCheck2'))
    #To add only test case: test_greaterCheck2 from the MyTestCase2 class
    suite.addTest(Prime_Num_Validation('test_prime_check'))
    #To add only test case: test_prime_check from the MyTestCase2 class
    return suite

if __name__ == '__main__':
    runner = unittest.TextTestRunner()
    runner.run(my_test_suite())

现在当我使用命令行运行:python -m unittest -v myTestsuite时,它运行MyTestCase2类的所有测试用例,实际上有3个TC,但我们只添加了3个中的一个套件。

我们应该如何避免调用所有测试用例并仅执行套件中存在的测试用例。

当我使用Pycharm编辑器运行时, 它再次执行MyTestCase2的所有测试用例。

2 个答案:

答案 0 :(得分:0)

您可以在单元测试的顶部放置标记,调用xfail会跳过测试。

例如

以下示例跳过test_function3()

import sys

def test_function1():

def test_function2():

@pytest.mark.skipif(sys.version_info < (3,3),
                    reason="requires python3.3")
def test_function3():

如需参考,请浏览本网站,您将找到更多信息py.test skipif

我上面提供的链接也有使用xfail标记的示例。

您也可以使用xfail标记或创建自己的自定义标记。 xfail表示您希望测试失败。

您可以使用以下命令运行xfail test。

pytest --runxfail

skipif一样,您也可以标记您对特定故障的预期 平台:

示例

import pytest
xfail = pytest.mark.xfail

@xfail
def test_func1():
    assert 0

@xfail(run=False)
def test_func2():
    assert 0

答案 1 :(得分:0)

我还假设运行 python -m unittest -v myTestsuite 只会执行定义的测试套件中的测试用例。但是,直接调用 myTestsuite.py 测试模块(即,不将模块作为参数传递给unittest库模块),应该会产生您想要的结果。尝试运行以下内容:

python myTestsuite

注意:您将需要将“ verbosity = 1”参数传递给TextTestRunner函数,而不是在命令行上使用“ -v”(或修改myTestsuite.py以采用“ -v”参数并将其传递给TextTestRunner )