欢迎访问宙启技术站
智能推送

使用pytest.markskip()实现测试用例的跳过功能

发布时间:2023-12-28 08:31:37

pytest.mark.skip()是pytest框架提供的一个装饰器,用于标记一个测试用例跳过执行。当我们想要临时跳过某个测试用例时,可以使用该装饰器。

使用方法:

1. 导入pytest的mark模块:from pytest import mark

2. 为需要跳过的测试用例添加装饰器:@mark.skip(reason="跳过的原因")

下面我们通过一个例子来演示如何使用pytest.mark.skip()实现测试用例的跳过功能。

首先,我们创建一个名为test_skip.py的测试文件,其中包含多个测试用例。

# test_skip.py
from pytest import mark

# 测试用例1
def test_case1():
    assert 1 + 1 == 2

# 测试用例2,使用mark.skip()跳过执行
@mark.skip(reason="临时跳过的原因")
def test_case2():
    assert 1 + 2 == 3

# 测试用例3
def test_case3():
    assert 2 * 3 == 6

# 测试用例4,使用mark.skip()跳过执行
@mark.skip(reason="临时跳过的原因")
def test_case4():
    assert 2 * 4 == 8

# 测试用例5
def test_case5():
    assert 3 ** 2 == 9

在上面的例子中,我们定义了5个测试用例,其中第2个测试用例test_case2和第4个测试用例test_case4使用了mark.skip()装饰器,被标记为跳过执行。其他的测试用例正常执行。

接下来,我们可以使用pytest命令来运行这些测试用例:

$ pytest test_skip.py

输出结果如下:

================================= test session starts =================================
pytest-django: Using Django settings: django_api.settings
platform linux -- Python 3.6.8, pytest-7.1.2, py-1.11.0, pluggy-1.1.1
rootdir: /home/assistant, configfile: pytest.ini
collected 5 items                                                                    

test_skip.py ..s.s                                                             [100%]

======================================= 3 skipped =======================================

从输出结果可以看出,被标记为跳过的测试用例test_case2和test_case4并没有执行,而其他的测试用例正常执行。

在pytest的测试报告中,我们也可以看到被跳过的测试用例:

================================================= test session starts ==================================================
... 
test_skip.py::test_case1 PASSED                                                                                     [ 20%]
test_skip.py::test_case3 PASSED                                                                                     [ 40%]
test_skip.py::test_case5 PASSED                                                                                     [ 60%]
test_skip.py::test_case2 SKIPPED (临时跳过的原因)                                                                              [ 80%]
test_skip.py::test_case4 SKIPPED (临时跳过的原因)                                                                              [100%]
================================================== 3 passed, 2 skipped ==================================================

这样,我们就成功使用pytest.mark.skip()实现了测试用例的跳过功能。

总结:

使用pytest.mark.skip()可以方便地跳过测试用例的执行。它可以帮助我们快速定位问题、临时跳过不可用的用例,并在测试报告中明确显示跳过的原因。使用该装饰器可以提高测试的灵活性和效率。