pytest(02) allure测试用例名称动态生成(函数内部控制用例名称)

上一章:说明如何控制用例名称长度,
如果我们想在函数内部控制测试用例名称,可以使用allure.dynamic动态生成测试用例名称
pytest(02) allure测试用例名称动态生成(函数内部控制用例名称)_第1张图片
源码实现:

import pytest
import allure

testdata = [{
     'CaseId': 33, 'url': '/saas-api/stock/out-ticket/save', 'CaseName': '保存p1', 'yapi_id': 1471, 'req_query': '{}',
            'req_body': '{"operator":@{employee_id.0},"in_out_time":"${now_time}",\n "parts_items":@{data_list.0}}', 'saveKey': None,
            'jsonDone': '["message"]', 'expect': '["操作成功"]', 'sheetName': '首页-采购单'},
            {
     'CaseId': 33, 'url': '/saas-api/stock/out-ticket/save', 'CaseName': '保存p1', 'yapi_id': 1471,
             'req_query': '{}',
             'req_body': '{"operator":@{employee_id.0},"in_out_time":"${now_time}",\n "parts_items":@{data_list.0}}',
             'saveKey': None,
             'jsonDone': '["message"]', 'expect': '["操作成功"]', 'sheetName': '首页-采购单'},
            ]

@pytest.mark.parametrize('index', list(range(len(testdata))))
def test_001(index):
    items = testdata[index]
    # 对items的其他操作, 发送请求、数据处理,断言···
    allure.dynamic.title(items['CaseName'])
    assert 1

allure.dynamic支持的常用方法,灵活使用能够重外部数据控制测试用例的详细展示内容

方法 效果 实现的pytest效果
feature 测试用例模块 @pytest.mark.feature
story 测试的功能 @pytest.mark.story
tag 测试用例自定义标记 @pytest.mark.自定义标记(smoke)
severity 标记用例等级(五个等级) 一般使用自定义mark标记
description 用例的描述信息 @allure.description

实现效果:

import pytest
import allure

testdata = [{
     'CaseId': 33, 'url': '/saas-api/stock/out-ticket/save', 'CaseName': '保存p1', 'yapi_id': 1471, 'req_query': '{}',
            'req_body': '{"operator":@{employee_id.0},"in_out_time":"${now_time}",\n "parts_items":@{data_list.0}}', 'saveKey': None,
            'jsonDone': '["message"]', 'expect': '["操作成功"]', 'sheetName': '首页-采购单'},
             {
     'CaseId': 33, 'url': '/saas-api/stock/out-ticket/save', 'CaseName': '保存p1', 'yapi_id': 1471,
             'req_query': '{}',
             'req_body': '{"operator":@{employee_id.0},"in_out_time":"${now_time}",\n "parts_items":@{data_list.0}}',
             'saveKey': None,
             'jsonDone': '["message"]', 'expect': '["操作成功"]', 'sheetName': '首页-采购单'}
            ]

@pytest.mark.parametrize('index', list(range(len(testdata))))
def test_001(index):
    items = testdata[index]
    # 对items的其他操作, 发送请求、数据处理,断言···
    allure.dynamic.title('测试用例名称')
    allure.dynamic.feature('功能模块')
    allure.dynamic.story('功能名称')
    allure.dynamic.description('测试用例描述')
    allure.dynamic.severity('critical')
    allure.dynamic.tag('p0')
    assert 1

pytest(02) allure测试用例名称动态生成(函数内部控制用例名称)_第2张图片

你可能感兴趣的:(python接口自动化,python)