PyTest之自定义标签
一、使用场景
自定义标签,可以标记测试用例,对测试用例进行分组,有利用对测试用例进行筛选。打标的方法@pytest.mark.XXX
。比如:给用例打标为API,代表接口自动化的用例,如下所示:
@pytest.mark.API
打标后,需要在pytest.ini
文件中进行注册,否则会报warning
警告信息。比如:
#test_mark.py
import pytest
class TestDemo:
@pytest.mark.UI
def test_demo01(self):
print("类级别test_demo01")
@pytest.mark.API
def test_demo02(self):
print("类级别test_demo02")
结果:
============================== warnings summary ===============================
PytestUnknownMarkWarning: Unknown pytest.mark.API - is this a typo? You can register custom marks to avoid this warning - for details
======================== 1 passed, 1 warning in 0.03s =========================
二、注册标签
1、pytest.ini中注册
其一,是通过pytest.ini配置文件注册。首先,新建pytest.ini
文件,在其中按格式注册标签,注意空格
[pytest] #这是固定写法
markers = #这是固定写法
API: 这是标签名
UI:
demo:
smoke:
2、脚本中注册
其二、是通过conftest.py
中编写,注册标签的方法来实现。如下所示:
def pytest_configure(config):
"""注册单个标签"""
config.addinivalue_line("markers", "baidu:打开百度")
def pytest_configure(config):
"""注册多个标签"""
markers_list = ["demo","baidu","API"]
for markers in markers_list:
config.addinivalue_line("markers", markers)
3、未注册标签报错
注意: 要特别留意的是,标记是区分字母大小写的。为了避免混淆,我们可以要求PyTest不接受未经注册的标记,这需要在pytest.ini文件中加上一行设置addopts = --strict-markers
只要没有注册, 程序直接报错. 经过这样的设置,当PyTest看到未经注册的标记时,从而更显式地提醒我们,避免潜在的问题,方便标签的管理。
[pytest]
addopts = --strict-markers
markers =
API: api test
UI: ui test
demo:
smoke:
报错信息如下:
=================================== ERRORS ====================================
'smoke' not found in `markers` configuration option
三、执行用例
新建fun文件,统一调用入口的方法筛选执行用例
pytest.main(["-s","-m","API"])
终端方式筛选执行用例
pytest -m "API"