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

如何通过pytest.markskip()为测试用例设置跳过标记

发布时间:2023-12-28 08:32:47

pytest 是一个 Python 的单元测试框架,为了更加灵活地控制测试用例的执行,pytest 提供了一个 pytest.mark.skip() 装饰器来设置跳过标记。当使用 pytest.mark.skip() 装饰一个测试用例时,这个用例会被标记为跳过,在执行测试时会被忽略。

要使用 pytest.mark.skip() 为测试用例设置跳过标记,首先需要安装 pytest:

pip install pytest

下面以一个简单的示例来说明如何通过 pytest.mark.skip() 设置跳过标记。

假设我们有一个名为 calc.py 的模块,其中定义了一个简单的计算器类 Calculator,其中包含了加法、减法、乘法、除法等四个方法:

class Calculator:
    def add(self, a, b):
        return a + b

    def subtract(self, a, b):
        return a - b

    def multiply(self, a, b):
        return a * b

    def divide(self, a, b):
        return a / b

我们可以使用 pytest 编写各种测试用例来验证这个计算器类的功能。下面我们编写一个测试文件 test_calc.py 来测试 Calculator 类的四个方法,并为其中的一个用例设置跳过标记。首先需要导入 pytestCalculator 类:

import pytest
from calc import Calculator

然后,我们可以编写测试用例。首先使用 pytest.fixture 装饰器来创建一个 Calculator 实例,在每个测试用例中都会使用到这个实例:

@pytest.fixture
def calc():
    return Calculator()

接下来,我们编写测试用例。分别测试了加法、减法、乘法和除法四个方法:

def test_add(calc):
    assert calc.add(2, 3) == 5

def test_subtract(calc):
    assert calc.subtract(5, 3) == 2

def test_multiply(calc):
    assert calc.multiply(2, 3) == 6

@pytest.mark.skip(reason="Not implemented yet")
def test_divide(calc):
    assert calc.divide(10, 2) == 5

在其中的一个测试用例 test_divide 上使用 pytest.mark.skip() 装饰器设置了跳过标记,并添加了一个跳过的原因。

最后,我们可以在命令行中运行 pytest 来执行这些测试用例。因为 test_divide 设置了跳过标记,所以在执行时会被跳过:

$ pytest
============================================= test session starts =============================================
...
collected 4 items                                                                                             

test_calc.py ..s.                                                                                       [100%]

======================================== 3 passed, 1 skipped in X.XX seconds ========================================

通过上面的例子,我们可以看到如何使用 pytest.mark.skip() 为测试用例设置跳过标记。这样我们就可以通过设置跳过标记来控制测试用例的执行,跳过一些暂时不需要执行的用例,或者标记一些用例为跳过状态等。