allure打开报告,显示Broken
搜索了一番,最终找到有用的解决方法是:将pytest版本换成8.0.2之后,可以成功打开报告并查看。据说是版本兼容问题。
allure添加环境信息
在pytest保存结果的路径下添加environment.properties文件,内容即为配置项名称及配置项值,如:
browser=chrome
url=http://www.baidu.com
selenium=4.25.0
pytest=8.0.2
allure_python_commons=2.8.29
allure添加测试步骤
使用with allure.step(‘具体的步骤描述’): 来为用例添加步骤,如:
with allure.step("关闭当前页面,回到主页面"):
self.page.close()
self.page.switch_to_original_window()
allure设置模块名
可以使用@allure.feature(“模块名”)语句设置模块名。
在类定义前设置,则类下面的所有用例都会归类到这个模块。也可以单独对用例进行模块名的设置
添加环境配置信息、修改allure报告的标题
需要先执行pytest的所有用例,生成pytest执行结果后,调用set_environment。生成allure测试报告之后,再调用update_title。
代码如下:
import os
def set_environment(report_path):
"""在测试报告目录下添加环境信息配置文件
report_path为pytest执行用例生成报告的目录
"""
enviro_str = (f"browser=chrom\n"
f"allure_python_commons=2.8.29\n"
f"pytest=8.0.2\n"
f"selenium=4.26.1\n"
f"pytest-ordering=0.6\n"
f"pytest-rerunfailures=14.0\n")
file = f"{report_path}{os.sep}environment.properties"
with open(file, "w+", encoding='utf-8') as f:
f.write(enviro_str)
def update_title(html_path, report_name):
"""修改测试报告中的标题
html_path为allure生成报告的目录
report_name为自定义的报告标题名称
"""
json_file = f"{html_path}{os.sep}widgets{os.sep}summary.json"
with open(json_file, 'r', encoding='utf-8') as f:
data = json.load(f)
data['reportName'] = report_name
with open(json_file, 'w', encoding='utf-8') as f:
f.write(str(json.dumps(data, ensure_ascii=False, indent=4)))
index_file = f"{html_path}{os.sep}index.html"
with open(index_file, 'r', encoding='utf-8') as f:
lines = f.readlines()
for i in range(len(lines)):
if re.match(r'.*<title>.*</title>.*', lines[i]) is not None:
lines[i] = lines[i].replace('Allure Report', report_name)
lines[i+1] = lines[i+1].replace('favicon', 'icon')
lines[i + 1] = lines[i + 1].replace('icon.ico?v=2', "logo.ico")
break
with open(index_file, 'w', encoding='utf-8') as f:
for line in lines:
f.write(line)
# 将title图标复制到html文件夹下
shutil.copy(f"{conf.REPORT_PATH}{os.sep}logo.ico", f"{html_path}{os.sep}logo.ico")