Pytest Mark标记机制:配置、注册与执行全解析

Cora
Cora
发布时间:2026-10-13 | 4人浏览过
原创

本文详细解析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的核心用法,希望能为读者的测试工作提供实质性帮助,欢迎持续关注相关技术更新。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表