pytest(16) mark用法

1.作用

  • 给用例分类
  • 筛选执行哪些用例
  • 钩子函数读取标记
  • 控制用例行为(跳过、超时、顺序等)

2.给用例打自定义标签

2.1 pytest.ini注册

python 复制代码
[pytest]
markers =
    mytag: 自定义标签
    device: 设备标签
    module: 模块标签

2.2 在测试用例上使用

python 复制代码
import pytest

# 打标记
@pytest.mark.mytag("示波器")
@pytest.mark.device("采集设备")
def test_1():
    assert 1 == 1

@pytest.mark.module("登录模块")
def test_2():
    assert 1 == 1

2.3执行时筛选

python 复制代码
# 只执行带 mytag 的用例
pytest -m mytag

# 执行带 device 或 module 的
pytest -m "device or module"

# 不执行 mytag
pytest -m "not mytag"

2.4钩子函数获取

python 复制代码
# conftest.py
import pytest

@pytest.hookimpl(hookwrapper=True)
def pytest_runtest_makereport(item, call):
    outcome = yield
    report = outcome.get_result()

    # 获取标记 @pytest.mark.mytag(xxx)
    tags = []
    for marker in item.iter_markers(name="mytag"):
        tags.extend(marker.args)

    print(f"用例:{item.nodeid}")
    print(f"标记内容:{tags}")
    print(f"结果:{report.outcome}")

2.5 pytest自带标记:跳过,参数化

python 复制代码
# 跳过用例
@pytest.mark.skip("暂不执行")

# 条件跳过
@pytest.mark.skipif(sys.version_info < (3,8), reason="版本太低")

# 预期失败
@pytest.mark.xfail

#  parametrize 参数化
@pytest.mark.parametrize("a,b", [(1,2), (3,4)])
相关推荐
2601_967987373 天前
Python在自动化测试中有哪些应用?
python自动化测试·selenium·appium·pytest·性能测试
Madison-No78 天前
pytest框架
pytest
凛铄linshuo14 天前
分析业务流程什么时候适合断言?
python·pytest
凛铄linshuo15 天前
自动化测试:pytest第一个实例学习
学习·pytest
Helix25017 天前
Python单元测试实战:pytest框架从入门到企业级测试体系搭建指南
python·单元测试·实战·mock·pytest·测试覆盖率·fixture
在世修行22 天前
干货:pytest
pytest·fixture·pytest assert
小小龙学IT23 天前
Python pytest 测试框架深度解析:从断言重写到插件生态的工程化测试体系
网络·python·pytest
落魄大学生之流水线上谋生计25 天前
pytest 入门与实践:从第一个测试到可维护的测试体系
pytest
念越1 个月前
Allure 测试报告保姆级教程:从安装到 pytest 集成与报告生成
pytest·allure
念越1 个月前
接口自动化测试从入门到实战:接口用例设计、Requests、Pytest、YAML、JSON Schema 与 Allure 报告
python·测试工具·自动化·json·pytest