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

在PyTest中使用标记(marker)来分类和过滤测试用例

发布时间:2024-01-05 17:16:33

在PyTest中,标记(marker)是一种用来分类和过滤测试用例的机制。它可以为测试用例添加任意数量的标记,并根据这些标记来过滤要执行的测试用例。

在PyTest中,我们可以为测试用例添加标记的方法是在测试函数或测试类上使用装饰器@pytest.mark。例如,我们可以为一个测试函数添加一个名为smoke的标记:

import pytest

@pytest.mark.smoke
def test_login():
    # 测试代码

我们也可以为一个测试类添加标记:

import pytest

@pytest.mark.smoke
class TestLogin:
    def test_login_success(self):
        # 测试代码

    def test_login_failure(self):
        # 测试代码

通过标记,我们可以将测试用例分为不同的组,例如,可以使用@pytest.mark.smoke标记标记需要快速执行的冒烟测试用例,使用@pytest.mark.regression标记标记需要长时间执行的回归测试用例,使用@pytest.mark.performance标记标记性能测试用例等。

当我们运行测试用例时,可以通过使用-m选项和标记名称来选择运行指定标记的测试用例。例如,我们可以运行所有带有smoke标记的测试用例:

pytest -m smoke

我们还可以使用not关键字来选择不运行指定标记的测试用例。例如,我们可以选择不运行带有smoke标记的测试用例:

pytest -m "not smoke"

除了使用命令行选项来过滤测试用例,我们还可以在测试用例中使用pytest.mark的特殊属性来判断某个测试用例是否带有特定的标记。例如,我们可以在测试函数中使用pytest.markget_marker方法来检查是否存在指定的标记:

import pytest

@pytest.mark.smoke
def test_login():
    marker = pytest.mark.get_marker("smoke")
    if marker is not None:
        # 带有smoke标记
        # 测试代码
    else:
        # 不带有smoke标记
        pass

PyTest中的标记功能非常强大,可以让我们更灵活地组织和管理测试用例。我们可以根据不同的需求创建不同的标记,然后根据需要选择指定标记的测试用例进行执行,或者排除指定标记的测试用例。通过使用标记,我们可以更加高效地执行和管理测试用例,提高测试的覆盖率和效率。