pytest中mark的使用

在pytest中,mark(标记)是用于对测试用例进行分类、筛选或附加元数据的重要功能。以下是其核心使用方法:

1. ‌基本标记定义与使用‌

‌注册标记‌:在pytest.ini中预先定义标记(避免运行时警告):

python 复制代码
[pytest]
markers =
    smoke: 冒烟测试用例
    slow: 执行耗时较长的用例

‌标记测试函数/类‌:

python 复制代码
@pytest.mark.smoke
def test_login():
    assert True

@pytest.mark.slow
class TestPerformance:
    def test_response_time(self):
        assert True

2. ‌常用内置标记‌

‌跳过测试‌:

python 复制代码
@pytest.mark.skip(reason="功能暂未完成")
def test_unimplemented():
    pass

‌预期失败‌:

python 复制代码
@pytest.mark.xfail(reason="已知兼容性问题")
def test_legacy_feature():
    assert False

3. ‌参数化标记(数据驱动)‌

python 复制代码
@pytest.mark.parametrize("input,expected", [(1, 2), (3, 4)])
def test_add_one(input, expected):
    assert input + 1 == expected

4. ‌自定义标记的筛选‌

命令行执行特定标记的测试:

bash 复制代码
pytest -m "smoke"          # 只运行冒烟测试
pytest -m "not slow"       # 排除耗时用例
pytest -m "smoke or slow"  # 组合逻辑

5. ‌动态添加标记‌

通过钩子函数动态标记(如根据执行时间):

python 复制代码
def pytest_collection_modifyitems(items):
    for item in items:
        if "api" in item.nodeid:
            item.add_marker(pytest.mark.api)

注意事项:

未注册的自定义标记会触发警告,需在pytest.ini中声明。

标记支持继承(类标记会应用到所有方法)。

可通过pytest --markers查看所有可用标记。

相关推荐
姚青&8 小时前
Pytest 测试用例编写
测试用例·pytest
Warren988 小时前
Pytest Fixture 作用域与接口测试 Token 污染问题实战解析
功能测试·面试·单元测试·集成测试·pytest·postman·模块测试
serve the people1 天前
python环境搭建 (七) pytest、pytest-asyncio、pytest-cov 试生态的核心组合
开发语言·python·pytest
真智AI2 天前
用 LLM 辅助生成可跑的 Python 单元测试:pytest + coverage 覆盖率报告(含运行指令与排坑)
python·单元测试·pytest
Warren982 天前
Allure 常用装饰器:实战用法 + 最佳实践(接口自动化)
运维·服务器·git·python·单元测试·自动化·pytest
Warren983 天前
Pytest Fixture 到底该用 return 还是 yield?
数据库·oracle·面试·职场和发展·单元测试·pytest·pyqt
Warren984 天前
Pytest Fixture 作用域详解:Function、Class、Module、Session 怎么选
面试·职场和发展·单元测试·pytest·pip·模块测试·jira
我的xiaodoujiao5 天前
使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 44--将自动化测试结果自动推送至钉钉工作群聊
前端·python·测试工具·ui·pytest
我的xiaodoujiao5 天前
使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 45--生成项目需要的requirements.txt依赖文件
python·学习·测试工具·pytest
月明长歌5 天前
全栈测试修炼指南:从接口策略到 Python+Pytest+Allure 企业级架构
python·架构·pytest