Pytest Mark标记机制:配置、注册与执行全解析
本文详细解析Pytest中mark标记的使用方法与底层原理。涵盖在conftest.py中注册单个及多个标签、通过pytest.ini文件配置标记、以及在测试代码中应用@ pytest.mark装饰器的具体操作。同时介绍如何利用命令行参数如-m、-k及--durations进行用例筛选、报告生成及性能分析,帮助开发者高效管理测试集。
Pytest Mark概述
本文深入探讨Pytest中mark标记的实际应用案例及其工作原理,通过详尽的代码示例展示如何配置和使用标记功能,为测试开发提供具有参考价值的技术指引。
Mark标记配置方法
具体操作流程如下:
第一步,完成标签名的注册流程。
第二步,在具体的测试用例函数或测试类定义前,添加@pytest.mark.标签名装饰器以应用标记。
标记的作用范围可覆盖单个测试用例、整个测试类以及模块文件层级。
关于标签的注册方式,主要有以下几种策略:
第一种方式适用于单个标签的注册。
需在项目的conftest.py文件中添加相应的配置代码。
def pytest_configure(config):
# demo是标签名
config.addinivalue_line("markers", "demo:示例运行")
第二种方式适用于需要注册多个标签的场景。
同样在conftest.py文件中,通过遍历列表的方式添加多个标记配置。
def pytest_configure(config):
marker_list = ["testdemo", "demo", "smoke"] # 标签名集合
for markers in marker_list:
config.addinivalue_line("markers", markers)
第三种方式是通过在项目任意目录下新建名为pytest.ini的配置文件来管理标记。
[pytest]
markers=
smoke:this is a smoke tag
demo:demo
testdemo:testdemo
以下是具体的代码实现示例:
import pytest
@pytest.mark.testdemo
def test_demo01():
print("函数级别的test_demo01")
@pytest.mark.smoke
def test_demo02():
print("函数级别的test_demo02")
@pytest.mark.demo
class TestDemo:
def test_demo01(self):
print("test_demo01")
def test_demo02(self):
print("test_demo02")
Mark标记执行与筛选
在测试执行阶段,可以通过多种方式进行运行控制。
第一种执行模式为命令行直接调用。
通过标记表达式执行
pytest -m demo
这条命令会执行被装饰器@pytest.mark.demo装饰的所有测试用例
生成html报告:
pytest -m demo --html=Report/report.html
生成xml报告:
pytest -m demo --junitxml=Report/report.xml
运行指定模块:
pytest -m demo --html=Report/report.html TestCases/test_pytest.py
运行指定测试目录
pytest -m demo --html=Report/report.html TestCases/
通过节点id来运行:
pytest TestCases/test_pytest.py::TestDemo::test_demo01
通过关键字表达式过滤执行
pytest -k "MyClass and not method"
这条命令会匹配文件名、类名、方法名匹配表达式的用例
获取用例执行性能数据
获取最慢的10个用例的执行耗时
pytest --durations=10
第二种模式是创建独立的run.py脚本文件来触发运行,相关代码实现如下。
pytest.main(["-m","demo","--html=Report/report.html"])
以上内容涵盖了Pytest mark的核心用法,希望能为读者的测试工作提供实质性帮助,欢迎持续关注相关技术更新。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













