日常自动化中,当我们本地运行自动化测试后,打开allure报告时,发现首页的环境信息及运行器信息都为空,如下图所示:
why?为什么会这样呢?
原因是因为在我们执行allure generate命令之前,系统自动生成的allure result目录缺少了这两个信息的文件,所以我们可以在运行allure generate命令之前,把这两个文件手动生成并放到allure result目录内,这样再运行allure generate命令生成的html报告里就会展示这两个模块信息。废话少说,直接上代码:
def set_report_env_on_results():
"""
在allure-results报告的目录下生成一个写入了环境信息的文件:environment.properties(注意:不能放置中文,否则会出现乱码)
@return:
"""
# 需要写入的环境信息
allure_env = {
'OperatingEnvironment': 测试环境,
'BaseUrl': www.test1.com,
'PythonVersion': platform.python_version(),
'Platform': platform.platform(),
'PytestVersion': pytest.__version__,
}
allure_env_file = os.path.join({你的自动生成allure result报告目录}, 'environment.properties')
with open(allure_env_file, 'w', encoding='utf-8') as f:
for _k, _v in allure_env.items():
f.write(f'{_k}={_v}\n')
def set_report_executer_on_results():
"""
在allure-results报告的目录下生成一个写入了执行人的文件:executor.json
@return:
"""
# 需要写入的环境信息
allure_executor = {
"name": "张三",
"type": "jenkins",
"url": "http://helloqa.com", # allure报告的地址
"buildOrder": 3,
"buildName": "allure-report_deploy#1",
"buildUrl": "http://helloqa.com/#1",
"reportUrl": "http://helloqa.com/#1/AllureReport",
"reportName": "张三 Allure Report"
}
allure_env_file = os.path.join({你的自动生成allure result报告目录}, 'executor.json')
with open(allure_env_file, 'w', encoding='utf-8') as f:
f.write(str(json.dumps(allure_executor, ensure_ascii=False, indent=4)))
使用:
在运行pytest自动化后,在生成allure报告之前,调用这两个方法
pytest.main([
'-vs',
'testCase/',
'--alluredir', 'allure_results', '--clean-alluredir'
])
# 在allure_results目录下创建environment.properties文件
set_report_env_on_results()
# 在allure_results目录下创建executor.json文件
set_report_executer_on_results()
# 使用allure generate -o 命令将./allure_results目录下的临时报告生成到allure_report目录下变成html报告
os.system(f'allure generate allure_results -o allure_report --clean')
运行后,再次查看报告,就可以正常展示环境信息和执行器信息,如下图: