侧边栏壁纸
博主头像
一朵云的博客博主等级

拥抱生活,向阳而生。

  • 累计撰写 108 篇文章
  • 累计创建 28 个标签
  • 累计收到 7 条评论

目 录CONTENT

文章目录

pytest -- mark 标签的介绍及使用

一朵云
2023-11-25 / 0 评论 / 0 点赞 / 1115 阅读 / 3480 字

Python pytest mark标签的介绍及使用

mark 标签

简介:

​ ​  @pytest.mark 是一个非常强大的功能,它允许你给测试函数打标签(mark),然后根据这些标签来筛选、分类、或修改测试行为

mark 注册

直接使用 @pytest.mark.xx 自定义注解,虽然能执行,但会产生warning警告

image-zsaa.png

解决方法:

在项目根目录下创建或修改 pytest.ini 文件,添加类似的自定义内容(声明标签名):

[pytest]
markers =
    smoke: 标记为冒烟测试
    slow: 标记为慢速测试(需要较长时间运行)
    fast: 标记为快速测试
    integration: 标记为集成测试
    login: 登录模块测试

image-ofqb.png

mark 执行

①、运行带有特定 mark 的测试

pytest -v -m "smoke"

②、运行排除带有特定 mark 的测试

pytest -v -m "not smoke"

③、组合多个 mark 运行测试

# 运行同时带有 smoke 和 fast 的测试
pytest -v -m "smoke and fast"

# 运行带有 smoke 或 slow 的测试
pytest -v -m "smoke or slow"

mark 实现条件跳过或参数化

①、@pytest.mark.skip:无条件跳过测试

@pytest.mark.skip(reason="功能尚未实现")
def test_skip_me():
    assert False

②、@pytest.mark.skipif:满足条件时跳过

import sys

@pytest.mark.skipif(sys.version_info < (3, 10), reason="需要 Python 3.10+")
def test_skipif():
    assert True

③、@pytest.mark.xfail:预期测试失败

默认行为:测试预期失败,通过也接受。

@pytest.mark.xfail(reason="已知问题,预期失败")
def test_xfail():
    assert False  # 预期失败,实际失败 → XPASS
  • pytest 会把它标记为 XFAIL(预期失败)
  • 即使失败,也认为是“预期中的”,所以整体测试不会失败

加上 strict=True:测试预期失败,通过则报错。

@pytest.mark.xfail(strict=True)
def test_divide_by_zero():
    assert 1 / 0 == 1
  • 如果测试失败(符合预期)→ XFAIL
  • 如果测试成功(不符合预期)→ XPASS ,并标记为测试失败
0

评论区