一、问题描述
allure 报告首页展示的 "环境" 显示“没有环境变量” 配置信息,如图:
二、复制配置文件至allure报告
为了让allure 报告首页展示的信息更全面,需要进行设置,一种方法是在项目根路径创建一个配置文件environment.properties
,然后在配置文件中添加自己的信息,如下:
env=TEST
version=3.0
Server=https://www.xtank.com
Tester=xtank
最后,每次执行后将该配置文件复制至allure报告路径下,如图:
显然,这种手动的方法虽然简单,但比较繁琐,所以更简单的办法是让其自动复制进去,然后再自动生成allure报告。这里要采用pytest中的hook函数pytest_sessionfinish
,代码如下:
conftest.py
def pytest_sessionfinish(session):
root_dir = session.config.rootdir
allure_report_dir = f"{root_dir}\\report\\allure"
if os.path.exists(allure_report_dir):
os.system(f"copy {root_dir}\\environment.properties {allure_report_dir}") # 拷贝配置文件至allure报告路径中
os.system(f"allure generate -c {allure_report_dir}") # 生成allure报告
os.system(f"allure open allure-report") # 打开报告
else:
log.warning(f"{allure_report_dir},文件路径不存在")
每次测试执行完成后就会自动生成报告,并将配置信息复制到指定目录中。如图:
三、创建配置文件并写入配置信息
上述方法为复制配置信息至指定目录。还可以直接写入配置信息,并在指定目录生成配置文件。当然配置信息可以由系统打印出并写入配置文件,也可以提前把配置文件写入某文件,然后再将配置信息读取出再写入新创建的配置文件中,这根据个人喜好而定,此处以配置信息读取出再写入新创建的配置文件中为例,代码如下:
def pytest_sessionfinish(session):
root_dir = session.config.rootdir
allure_report_dir = f"{root_dir}\\report\\allure"
env_path = f"{root_dir}\\environment.properties"
if os.path.exists(allure_report_dir):
if os.path.exists(env_path):
with open(env_path, "r") as fp: # 读取配置文件
data = fp.read()
with open(f"{allure_report_dir}\\environment.properties", "w") as fp: # 在allure报告路径中生成配置文件,并写入配置信息
fp.write(data)
else:
log.warning(f"{env_path},配置文件不存在")
os.system(f"allure generate -c {allure_report_dir}") # 生成allure报告
os.system(f"allure open allure-report") # 打开报告
else:
log.warning(f"{allure_report_dir},文件路径不存在")
结果一样: