Python pytest mark标签的介绍及使用
mark 标签
简介:
@pytest.mark
是一个非常强大的功能,它允许你给测试函数打标签(mark),然后根据这些标签来筛选、分类、或修改测试行为。
mark 注册
直接使用 @pytest.mark.xx
自定义注解,虽然能执行,但会产生warning警告。
解决方法:
在项目根目录下创建或修改 pytest.ini
文件,添加类似的自定义内容(声明标签名):
[pytest]
markers =
smoke: 标记为冒烟测试
slow: 标记为慢速测试(需要较长时间运行)
fast: 标记为快速测试
integration: 标记为集成测试
login: 登录模块测试
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
,并标记为测试失败
评论区