python pytest.mark

pytest.mark 是 pytest 测试框架中的一个功能,它允许你为测试用例和测试夹具(fixtures)添加元数据(或称为“标记”)。这些标记可以用于各种目的,例如选择性地运行特定的测试用例集,跳过某些测试用例,或者为测试用例添加额外的信息。

pytest.mark 主要有以下几种用法:

为测试用例添加标记:
你可以使用 pytest.mark.xxx 装饰器来为特定的测试用例添加标记。这些标记可以在命令行中使用 -m 选项来过滤要运行的测试用例。

python
import pytest

@pytest.mark.slow
def test_something_slow():
# 这个测试用例被标记为 "slow"
pass
然后,在命令行中,你可以使用以下命令来只运行标记为 "slow" 的测试用例:

bash
pytest -m slow
为夹具添加标记:
除了测试用例,你还可以为夹具添加标记。这可以用于控制夹具的作用域(scope)或其他行为。

python
import pytest

@pytest.fixture(scope="module", params=[1, 2])
@pytest.mark.usefixtures
def my_fixture(request):
return request.param
在这个例子中,my_fixture 被标记为 usefixtures,尽管这个标记本身并不改变夹具的行为。但是,你可以自定义 pytest 钩子函数来根据这些标记改变夹具的行为。

跳过测试用例:
pytest.mark.skip 和 pytest.mark.skipif 可以用来跳过某些测试用例。skip 无条件地跳过测试用例,而 skipif 则在满足特定条件时跳过。

python
import pytest
import sys

@pytest.mark.skipif(sys.platform == 'win32', reason="does not run on windows")
def test_on_unix():
# 这个测试用例在 Windows 上会被跳过
pass
预期失败的测试用例:
pytest.mark.xfail 可以用来标记预期会失败的测试用例。这有助于跟踪那些你知道有问题但尚未修复的测试用例。

python
import pytest

@pytest.mark.xfail(reason="bug 123")
def test_function():
# 这个测试用例预期会失败,因为有一个已知的 bug
assert False
使用自定义标记:
你还可以定义自己的标记,并在测试用例或夹具中使用它们。然后,你可以编写自定义的 pytest 钩子函数来处理这些标记。

python
import pytest

@pytest.mark.mycustommark
def test_function():
pass
要处理自定义标记,你需要在 pytest_configure 或其他钩子函数中编写逻辑。

标记是 pytest 一个非常强大的功能,它允许你以灵活的方式组织和控制你的测试套件。通过合理地使用标记,你可以更容易地管理、维护和运行你的测试用例。

posted @   乐乐乐乐乐乐樂  阅读(63)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
jQuery火箭图标返回顶部代码
点击右上角即可分享
微信分享提示