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: 

image-20210910165016618

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:

image-20210910170316348

报错信息如下:

=================================== ERRORS ====================================
'smoke' not found in `markers` configuration option

三、执行用例

新建fun文件,统一调用入口的方法筛选执行用例

pytest.main(["-s","-m","API"])

终端方式筛选执行用例

pytest -m "API"

image-20210910170126752

posted @ 2021-09-29 16:30  xyztank  阅读(574)  评论(0编辑  收藏  举报