如何在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()用例被跳过,并打印了一条警告信息。
