前言
从这篇开始,逐一解决fixture
是啥?mark
是啥?参数request
是啥?钩子函数是啥?parametrize
参数化是啥?这些问题。本片先介绍一下mark
是啥?以及如何使用
Markers有啥用?
当使用 Pytest 运行测试时,可以通过标记(Markers)来为测试函数或类添加自定义的元数据。标记可以用于对测试进行分类、过滤和定制化。
查看所有Markers
pytest --markers
常用的内置标记
内置标记(Built-in Markers): Pytest 提供了一些内置的标记,用于常见的测试场景。一些常用的内置标记包括:
@pytest.mark.skip
: 标记该测试为跳过;@pytest.mark.parametrize
: 标记该测试使用参数化,可以为测试函数指定多组参数;@pytest.mark.xfail
: 标记该测试为预期失败;@pytest.mark.skipif
: 根据条件动态地跳过某个测试。@pytest.mark.timeout
:为测试用例设置运行超时时间。
@pytest.mark.skip
可以设置一个可选参数reason,表明跳过的原因
import pytest
@pytest.mark.skip()
def test_01():
pass
未增加跳过原因,输出内容为
test_demo.py::test_01 SKIPPED (unconditional skip) [100%]
Skipped: unconditional skip
我们增加跳过原因,看看输出结果
import pytest
@pytest.mark.skip(reason='skip reason')
def test_01():
pass
执行输出结果如下
test_demo.py::test_01 SKIPPED (skip reason) [100%] Skipped: skip reason
可以看到会直接显示具体原因。
pytest.skip
方法
这里我们顺带提一下这个方法。可以在测试执行期间强制跳过
def test_01():
pytest.skip(reason="skip reason")
另外,还可以为其设置一个布尔型的参数allow_module_level(默认为False),表明是否允许在模块中调用这种方法,如果置为True,则跳过模块中剩余的部分,也就是说其值为True时这个模块中所有测试方法都被跳