参考文档:
Allure Report Docs — History and retries
以下是如何进行操作的示例,假设你的项目配置为使用allure-results和allure-report目录:
1.确保你在allure-report目录中生成了之前的报告。
2.删除allure-results目录。
3.运行测试。
4.将allure-report/history子目录复制到allure-results/history。
5.生成新的报告。
如果你定期遵循这样的流程,Allure将每次保留来自最新20份报告的数据在allure-results/history中。这将为每个测试创建最多20条历史记录,并在每个图表中最多创建20列。
Allure 本身并不直接提供每次保留来自最新20份报告的数据在 allure-results/history
目录中的功能。这个特性通常不是Allure框架的核心功能,而是需要开发者通过一些额外的脚本或工具来实现。
然而,你可以通过手动管理历史数据或编写自动化脚本来近似实现这个功能。以下是一个简化的步骤说明,你可以根据自己的需求进行调整:
-
运行测试并生成结果:
每次运行测试时,确保Allure的结果输出到allure-results
目录。 -
生成报告:
使用allure generate
命令将allure-results
目录中的结果转换成HTML报告,并输出到allure-report
目录。 -
备份历史数据:
在生成新的报告之前,你可以编写一个脚本来检查allure-results/history
目录中的历史数据数量。如果历史数据的数量超过了20份,你可以删除最旧的一些报告数据,以确保只保留最新的20份。 -
复制历史数据到新的结果目录:
在生成新的报告之前,将allure-report/history
目录中的历史数据复制到allure-results/history
。这样,当生成新的报告时,Allure将能够访问到这些历史数据并在报告中显示趋势。 -
自动化这个过程:
你可以将上述步骤编写成一个自动化脚本,比如使用shell脚本、Python脚本或其他你熟悉的脚本语言。这个脚本可以在每次运行测试并生成报告之前执行,以确保历史数据的正确管理。
请注意,这个过程需要你自己管理历史数据的备份和删除,因为Allure本身不会为你做这些。此外,删除历史数据时要小心,确保不会意外删除重要的数据。
在将allure-report/history
目录中的最新历史数据复制到allure-results/history
目录时,如果文件名称相同,确实会发生覆盖原有数据的情况。为了避免这种情况,你可以采取以下几种方法:
1. 时间戳或版本控制
在复制文件之前,可以为每个文件添加一个时间戳或版本号作为后缀。这样,即使文件的基本名称相同,由于后缀的不同,也不会覆盖原有的文件。例如,你可以将文件名从history_data.json
更改为history_data_20240424144839.json
,其中20240424144839
是复制时的时间戳。
2. 增量备份
另一种方法是采用增量备份的策略。即,不直接覆盖原有文件,而是将新文件保存为新的文件名或保存在不同的子目录中。这样,你可以保留所有历史版本的数据,而不仅仅是最新的20份。这种方法需要更多的存储空间,但可以确保数据的完整性和可追溯性。
3. 检查并处理冲突
在复制文件之前,你可以编写脚本检查allure-results/history
目录中是否已经存在具有相同名称的文件。如果存在冲突,你可以决定是覆盖原有文件、保留原有文件并跳过复制、还是将新文件重命名为不同的名称后再进行复制。
4. 使用专门的备份工具
你还可以考虑使用专门的备份工具或库来处理文件的复制和冲突解决。这些工具通常提供更为灵活和强大的功能,可以帮助你更好地管理历史数据。
pytest --reruns 2 .\TestCases\ModelF\ --alluredir allure_results
allure generate allure_results --clean
allure open allure-report复制allure-report内容到allure_results目录。文件名称相同,则重命名文件
pytest --reruns 2 .\TestCases\ --alluredir allure_results
allure generate allure_results --clean
allure open allure-report
Allure报告显示TREND和History内容