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)])
相关推荐
昔我往昔5 天前
pytest日志问题排查记录
python·pytest
黄昏恋慕黎明8 天前
博客论坛技术迭代
python·pytest
2601_962078238 天前
Python接口自动化流程(pytest)
python·pytest·接口自动化·测试框架·断言
杨女士YRJ8 天前
python+pytest+01
python·pytest
2601_962078239 天前
Python接口自动化框架:pytest
python·pytest·接口自动化·测试框架·restfulapi
2601_962078199 天前
Appium+Python+pytest自动化测试框架详解
自动化测试·python·appium·pytest·移动应用
2601_9622845011 天前
安卓APP UI自动化测试:Python + UiAutomator2 + pytest + pytest-html
python·pytest·uiautomator2·ui自动化测试·安卓app
2601_9623008111 天前
基于pytest的接口自动化测试:使用requests模块的实战项目与接口关联方法详解
接口自动化测试·测试用例·pytest·接口关联·requests模块
2601_9623008111 天前
Python + Requests + Pytest + Excel + Allure:接口自动化测试项目实战
python·excel·pytest·allure·requests
11路没有终点12 天前
Pytest 安装、版本与第一个测试用例
测试用例·pytest