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

如何在Python中使用pytest.markskip()跳过部分测试用例

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

pytest是Python中一个功能强大的测试框架,它提供了很多方便的功能来编写和执行测试用例。其中一个功能就是遇到某些条件不满足时跳过特定的测试用例。

在pytest中,使用@pytest.mark.skip()装饰器来跳过指定的测试用例。使用该装饰器时,可以传入一个字符串作为参数,用于说明为什么要跳过该测试用例。

下面是一个使用@pytest.mark.skip()装饰器跳过测试用例的例子:

import pytest

@pytest.mark.skip("跳过这个用例的原因")
def test_case1():
    assert 1 == 2

def test_case2():
    assert 3 == 3

@pytest.mark.skipif(2 > 1, reason="跳过这个用例的原因")
def test_case3():
    assert 4 == 5

上面的例子中,test_case1()函数使用了@pytest.mark.skip()装饰器来跳过该测试用例,并且传入了一个字符串来说明跳过的原因。

test_case2()函数没有被装饰器修饰,所以会被正常执行。

test_case3()函数使用了@pytest.mark.skipif()装饰器来跳过该测试用例,该装饰器可以接收一个条件,只有当条件为真时才会跳过该测试用例。

执行上述代码时,控制台输出如下:

============================= test session starts ==============================
platform win32 -- Python 3.x.x, pytest-6.x.x, py-1.x.x, pluggy-1.x.x
rootdir: D:\pytest, configfile: pytest.ini
collected 3 items

test_sample.py ..s                                                     [100%]

======================= short test summary info =========================
SKIP [1] test_sample.py:4: 跳过这个用例的原因
SKIP [1] test_sample.py:11: 跳过这个用例的原因
======================== 2 passed, 2 skipped in 0.35s =========================

可以看到,test_case1()test_case3()两个用例被成功跳过,而test_case2()用例被正常执行。

如果想要在跳过测试用例时显示一个警告信息而不是错误信息,可以使用@pytest.mark.skip(reason="原因", run=True)装饰器。需要注意的是,run=True参数是必须提供的。例如:

import pytest

@pytest.mark.skip(reason="这是一个警告信息", run=True)
def test_case1():
    assert 1 == 2

执行该代码时,控制台输出如下:

============================= test session starts ==============================
platform win32 -- Python 3.x.x, pytest-6.x.x, py-1.x.x, pluggy-1.x.x
rootdir: D:\pytest, configfile: pytest.ini
collected 1 item / 1 skipped

test_sample.py s                                                      [100%]

====================== 1 passed, 1 skipped in 0.35s =======================

可以看到,test_case1()用例被跳过,并打印了一条警告信息。