场景:当自动化测试使用excel测试用例驱动时,动态显示模块名和用例标题就很有用。
https://blog.csdn.net/lixiaomei0623/article/details/120273737
一、allure报告动态参数化展示模块名和用例标题
使用@pytest.mark.parametrize 参数化完成数据驱动时,如果标题写死或者使用别名的方式 这样在报告中的可读性也不高。
如何更美观的展示报告,增加报告的可读性呢,我们需要把从excel中获取到的sheetName作为动态的模块名,caseName作为每条用例的名称。
方法一:allure.dynamic 动态属性
只需要增加两行代码,如下图所示
def testApi(self, data): # 动态添加模块和标题 allure.dynamic.story(data['sheetname']) allure.dynamic.title(data['casename'])
上边用的是下边这种方式: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 用例标题
用例标题也可以被动态更新
@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支持的常用方法,灵活使用能够重外部数据控制测试用例的详细展示内容
还有另一种方法动态展示用例标题:
参数化
参数化时候,可以使用@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([]) 中参数改成空列表就行了
标签:动态显示,title,dynamic,标题,用例,allure,test From: https://www.cnblogs.com/may18/p/17751978.html