(allure报告定制)动态显示模块名和用例标题

场景:当自动化测试使用excel测试用例驱动时,动态显示模块名和用例标题就很有用。

allure.dynamic.feature
allure.dynamic.link
allure.dynamic.issue
allure.dynamic.testcase
allure.dynamic.story
allure.dynamic.title
allure.dynamic.description

https://blog.csdn.net/lixiaomei0623/article/details/120273737

python读取excel测试用例数据

一、allure报告动态参数化展示模块名和用例标题

使用@pytest.mark.parametrize 参数化完成数据驱动时,如果标题写死或者使用别名的方式 这样在报告中的可读性也不高。

如何更美观的展示报告,增加报告的可读性呢,我们需要把从excel中获取到的sheetName作为动态的模块名,caseName作为每条用例的名称。

方法一:allure.dynamic 动态属性

 只需要增加一行代码,如下图所示

allure.dynamic.title(step_name)
import allure
import pytest
from util import excel_readUtil


list_step = excel_readUtil.HandleExcel(filename='C://Users//YM520//Desktop//caseqq.xlsx', sheetname='test00').get_cases()


@allure.epic('项目名称01')
@allure.feature('登录模块')  # 一般用在类上方
@allure.title('测试用例标题')
@allure.story('登录成功')
# @allure.severity(allure.severity_level.CRITICAL
@pytest.mark.parametrize('case_yy', list_step)
def test_login(case_yy):
    step_name = case_yy.get('stepN', None)
    allure.dynamic.title(step_name)
    with allure.step('输入用户名'):
        print('请输入用户名')
        user = input()
    with allure.step('输入密码'):
        print('请输入密码')
        password = input()
    with allure.step('点击登录按钮'):
        print('点击登录按钮')
        # 这里假设有一个名为click_login的函数可以模拟点击登录按钮
        # click_login(user, password)
    with allure.step('检查是否登录成功'):
        # assert check_login(user)
        assert user != password

上边用的是下边这种方式:pytest 结合 allure 描述用例的时候我们一般使用 @allure.title 和 @allure.description 描述测试用例的标题和详情。
在用例里面也可以动态更新标题和详情,使用allure.dynamic方法实现。

allure.dynamic 动态属性

feature 模块

allure.dynamic.feature(feature_name)

功能点 story

allure.dynamic.story(case_story)

 用例标题 title

allure.dynamic.title(case_title)

title 用例标题

用例标题也可以被动态更新(feature/story 不会被动态更新,而是新增)

@allure.title("This title will be replaced in a test body")
def test_with_dynamic_title():
    assert 2 + 2 == 4
    allure.dynamic.title('After a successful test finish, the title was replaced with this line.')

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

方法效果实现pytest效果
feature测试用例模块@pytest.mark.feature
story测试的功能@pytest.mark.story
tag测试用例自定义标记

@pytest.mark.自定义标记(smoke)

severity标记用例等级(五个等级)一般使用自定义mark标记
description用例的描述信息@allure.description

方法二:动态展示用例标题:

参数化

参数化时候,可以使用@allure.title给用例不同标题

@allure.title("Parameterized test title: adding {param1} with {param2}")
@pytest.mark.parametrize('param1,param2,expected', [
    (2, 2, 4),
    (1, 2, 5)
])
def test_with_parameterized_title(param1, param2, expected):
    assert param1 + param2 == expected

也可以在用例里面使用allure.dynamic.title更新用例的标题

import pytest
import allure

 
def login(username, password):
    '''登录'''
    print("输入账号:%s" % username)
    print("输入密码:%s" % password)
    # 返回
    return {"code": 0, "msg": "success!"}
 
 
# 测试数据
test_datas = [
    ({"username": "yoyo1", "password": "123456"}, "success!", "输入正确账号,密码,登录成功"),
    ({"username": "yoyo2", "password": "123456"}, "failed!", "输入错误账号,密码,登录失败"),
    ({"username": "yoyo3", "password": "123456"}, "success!", "输入正确账号,密码,登录成功"),
]
 
 
@allure.story("登录用例")
@pytest.mark.parametrize("test_input,expected,title",
                         test_datas
                         )
def test_login(test_input, expected, title):
    '''测试登录用例'''
    # 获取函数返回结果
    result = login(test_input["username"], test_input["password"])
    # 断言
    assert result["msg"] == expected
    allure.dynamic.title(title)

二、allure报告中allure.title 在动态参数后如何去掉后方的参数化显示

动态参数化后的报告,所有参数都默认显示出来,把用例标题的样式给挤乱了。

如何解决?
1.解决方法如下 ,修改第三方包包的listener.py文件。
找到python目录下 \Lib\site-packages\allure_pytest\listener.py 文件

(/usr/local/python3/lib/python3.7/site-packages/allure_pytest/listener.py )

(如果在python目录未找到,就在当前项目的虚拟环境下边找到这个文件)

  将下图中红色部分test_result.parameters.extend([]) 中参数改成空列表就行了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值