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

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

发布时间:2023-12-28 08:35:35

pytest.mark.skip() 是 pytest 框架提供的一个装饰器,用于在运行测试用例时跳过指定的测试用例。跳过的原因可以通过reason参数进行说明。

使用 pytest.mark.skip() 跳过测试用例的用法如下:

1. 导入 pytest 和 pytest.mark.skip

import pytest
from pytest import mark

2. 使用 @pytest.mark.skip() 装饰要跳过的测试用例。@pytest.mark.skip() 可以接受一个可选参数reason,用于指定跳过的原因。

@mark.skip(reason="暂时跳过,原因是xxx")
def test_example():
    # 测试用例的代码
    pass

3. 运行测试

pytest test_example.py

当运行 pytest 时,测试时会自动跳过被@pytest.mark.skip装饰的测试用例。在测试报告中,被跳过的测试用例会显示为skipped状态,并且会显示跳过的原因。

以下是一个使用 pytest.mark.skip() 的完整示例:

import pytest
import random


# 跳过指定测试用例
@pytest.mark.skip(reason="暂时跳过,因为待修改的功能还未完成")
def test_multiply():
    a = random.randint(1, 10)
    b = random.randint(1, 10)
    assert a * b == multiply(a, b)

# 给定两个数,返回它们的乘积
def multiply(a, b):
    return a * b

在上面的示例中,test_multiply使用@pytest.mark.skip装饰器,指定了跳过的原因。所以这个测试用例在运行时会被跳过。

对于不同原因的跳过,可以通过增加不同的装饰器进行标记,比如@pytest.mark.skipif@pytest.mark.xfail等。

- @pytest.mark.skipif 可以根据条件确定是否跳过测试用例。示例代码如下:

import pytest


# 根据条件确定是否跳过测试用例
@pytest.mark.skipif(condition=True, reason="条件满足,跳过测试用例")
def test_example():
    # 测试用例的代码
    pass

- @pytest.mark.xfail 标记的测试用例是预期失败的,即测试用例本来就应该失败。示例代码如下:

import pytest


# 预期失败的测试用例
@pytest.mark.xfail(reason="就是要失败")
def test_example():
    assert 1 == 2

@pytest.mark.skip@pytest.mark.xfail都可以接受 reason 参数,用于指定跳过或者预期失败的原因。

使用 pytest.mark.skip() 跳过测试用例可以很方便地跳过不需要执行的测试用例,减少了不必要的运行时间。同时,通过给跳过的测试用例提供跳过的原因,也可以提高代码可读性和可维护性。