pytest(01)allure 报告用例名称paramtrize控制

1、使用paramtrize传参优点
减少代码编写量,提高测试用例的编写效率,但若paramtrize传参的参数过长时会影响用例名称显示:
pytest(01)allure 报告用例名称paramtrize控制_第1张图片
这样使得测试用例名称不够美观,那么如何使用paramtrize传参使得用例名称美观而数据又能在测试函数内部使用将至关重要。
源码实现:

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的其他操作, 发送请求、数据处理,断言···
    assert 1

实现效果:
pytest(01)allure 报告用例名称paramtrize控制_第2张图片*使用paramtrize中ids也可动态控制测试用例名称,但用例展示长度依旧会纯在问题

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', testdata, ids=['测试用例名称1','测试用例名称2'])
def test_001(index):

    # 对items的其他操作, 发送请求、数据处理,断言···
    assert 1

pytest(01)allure 报告用例名称paramtrize控制_第3张图片
*使用@allure.title(’{title}’)动态生成

import pytest
import allure

testdata = [('测试用例名称1',{
     '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': '首页-采购单'}),
            ('测试用例名称2', {
     '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': '首页-采购单'})
            ]
@allure.title('{title}')
@pytest.mark.parametrize('title, testdata', testdata, ids=['测试用例名称1','测试用例名称2'])
def test_001(title, testdata):
    assert 1

pytest(01)allure 报告用例名称paramtrize控制_第4张图片
动态生成测试用例,请查看下一章

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