解决每次生成的 Allure 报告(`index.html` 文件)都被输出到了同一个 `allure-report` 目录下
一、解决每次生成的 Allure 报告都被输出到了同一个 allure-report
目录下
遇到的问题是,每次生成的 Allure 报告(index.html
文件)都被输出到了同一个 allure-report
目录下,导致之前的报告被覆盖。这是因为在生成报告时,默认的输出目录是 ./allure-report
,如果不改变输出目录,那么新的报告会覆盖旧的报告。
要解决这个问题,需要在生成报告时,为输出的报告目录指定一个唯一的名称。
解决方案:为每次生成报告指定独特的输出目录
-
在运行测试时,指定唯一的结果目录:
已经在运行
pytest
时,为--alluredir
指定了一个带有时间戳或其他唯一标识的目录。例如:timestamp=$(date +%Y%m%d_%H%M%S) pytest -s -q --alluredir=./allure-results/5001_run_$timestamp
-
在生成 Allure 报告时,指定唯一的输出报告目录:
使用
-o
参数为输出的报告目录指定一个唯一的名称,同样可以使用时间戳或其他标识。示例命令:
allure generate ./allure-results/5001_run_$timestamp -o ./allure-report/5001_run_$timestamp --clean
解释:
./allure-results/5001_run_$timestamp
是之前测试生成的结果目录。-o ./allure-report/5001_run_$timestamp
使用-o
参数指定了一个带有时间戳的独特输出报告目录。--clean
参数在生成报告前清空目标报告目录,确保报告的干净和完整。
完整的执行流程
步骤1:获取时间戳
timestamp=$(date +%Y%m%d_%H%M%S)
步骤2:运行测试,指定唯一的结果目录
pytest -s -q --alluredir=./allure-results/5001_run_$timestamp
步骤3:生成报告,指定唯一的输出报告目录
allure generate ./allure-results/5001_run_$timestamp -o ./allure-report/5001_run_$timestamp --clean
在 Python 脚本中实现
如果您使用 Python 脚本来运行测试和生成报告,可以这样写:
import datetime
import os
# 获取当前时间戳
timestamp = datetime.datetime.now().strftime('%Y%m%d_%H%M%S')
# 定义结果目录和报告目录
results_dir = f'./allure-results/5001_run_{
timestamp}'
report_dir = f'./allure-report/5001_run_{
timestamp}'
# 运行测试,指定唯一的结果目录
os.system(f'pytest -s -q --alluredir={
</