pytest中提供的mark
模块,可以实现很多功能,如:
- 标记用例,即打标签
skip
、skipif
标记跳过,skip
跳过当前用例,skipif
符合情况则跳过当前用例xfail
标记为预期失败
标记用例
有时候我们可能并不需要执行项目中的所有用例,而只执行其中的某些用例,即指定执行某一类或某个场景的测试用例,比如只执行冒烟用例,那么这个时候就需要使用@pytest.mark.标签名
来进行打标签过滤。标签名
需要先注册,然后才能使用。
注册标签
官方文档里提供了三种注册标签的方法,这里只介绍pytest.ini
及conftest.py
,有兴趣的可以去查看。
方法一,在项目根目录新建pytest.ini
,并在其中注册、管理标签。示例如下:
[pytest]
markers =
smoke: marks test as smoke
login
order: 下单场景
这里定义了三个标签,分别是:smoke、login、order,冒号后面的是标签说明,可不加。
方法二,在conftest.py
中定义钩子函数进行标签注册,格式如下:
def pytest_configure(config):
marker_list = [
"smoke: marks test as smoke",
"login",
"order: 下单场景"
]
for marker in marker_list:
config.addinivalue_line("markers", marker)
方法二需注意定义的格式,不能轻易修改函数名及入参。
使用方法
import pytest
# 标记测试函数
@pytest.mark.smoke
def test_01():
print("执行test_01")
def test_02():
print("执行test_02")
# 标记测试类
@pytest.mark.order
class TestOrder:
def test_order(self):
print("下单")
def test_pay(self):
print("支付")
# 多个标签
@pytest.mark.smoke
@pytest.mark.login
def test_login():
print(