【Python实践】解决每次生成的 Allure 报告(`index.html` 文件)都被输出到了同一个 `allure-report` 目录下,导致之前的报告被覆盖

一、解决每次生成的 Allure 报告都被输出到了同一个 allure-report 目录下

遇到的问题是,每次生成的 Allure 报告(index.html 文件)都被输出到了同一个 allure-report 目录下,导致之前的报告被覆盖。这是因为在生成报告时,默认的输出目录是 ./allure-report,如果不改变输出目录,那么新的报告会覆盖旧的报告。

要解决这个问题,需要在生成报告时,为输出的报告目录指定一个唯一的名称。


解决方案:为每次生成报告指定独特的输出目录

  1. 在运行测试时,指定唯一的结果目录:

    已经在运行 pytest 时,为 --alluredir 指定了一个带有时间戳或其他唯一标识的目录。例如:

    timestamp=$(date +%Y%m%d_%H%M%S)
    pytest -s -q --alluredir=./allure-results/5001_run_$timestamp
    
  2. 在生成 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={
     
     </
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿寻寻

你的鼓励将是我创作的最大动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值