光之远征团跨服战

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"

怎么和客户打招呼
不知道C盘怎么格式化?这样解决!


最新发表

友情链接