一、allure报告动态参数化展示模块名和用例标题
使用@pytest.mark.parametrize 参数化完成数据驱动时,如果标题写死或者使用别名的方式 这样在报告中的可读性也不高
如何更美观的展示报告,增加报告的可读性呢,我们需要把从excel中获取到的sheetName作为动态的模块名,caseName作为每条用例的名称
方法一:allure.dynamic 动态属性
只需要增加两行代码,如下图所示:
修改后的allure报告,动态的展示了模块名称和用例标题
上边用的是下边这种方式: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
# 作者:上海-悠悠 QQ交流群:779429633
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([]) 中参数改成空列表就行了