在重新执行失败的测试后,我正在使用rebot工具合并输出。
robot --output original.xml /path/to/dir/.
robot --rerunfailed original.xml --output rerun.xml /path/to/dir/.
rebot -o machine1.xml -l machine1.html --merge original.xml rerun.xml
在少数测试机上提供了相同的操作。 测试套件是相同的,并且针对每个VM执行。所有虚拟机都被认为是相同的,但是它们不稳定,因此我在每台计算机上收到的结果都不相同。 我想合并所有计算机上的所有结果,并获取通过测试的最大数量,以了解测试是否真的失败或只是不稳定的环境而测试本身就可以。
换句话说,如果测试至少在1台计算机上通过,但在其他3台计算机上未通过,则在最终报告中应将其视为“通过”。
但是,在这种情况下,我会收到False。
是否可以以某种方式更改行为?
最终报告中的示例:
Status: FAIL (critical)
Message: Re-executed test has been merged.
New status: FAIL
New message: Re-executed test has been merged.
New status: FAIL
New message: IndexError: Given index 0 is out of the range 0--1.
Old status: FAIL
Old message: IndexError: Given index 0 is out of the range 0--1.
Old status: PASS
Old message: Re-executed test has been merged.
New status: PASS
New message:
Old status: PASS
Old message: Re-executed test has been merged.
New status: PASS
New message:
Old status: PASS
Old message:
答案 0 :(得分:1)
使用我自己编写的prerebotmodifier的简单脚本解决。也许对其他人会有帮助。
因此,我创建了 TestStatusChecker.py ,它有助于合并具有以下逻辑的报告:只有在所有报告中都失败的情况下,测试状态才会失败。。>
用于合并结果的CLI命令: from robot.api import SuiteVisitor
class TestStatusChecker(SuiteVisitor):
def __init__(self, *args):
pass
def visit_test(self, test):
if 'PASS' in test.message and 'Re-executed test has been merged' in test.message:
test.status = 'PASS'
test.message = 'Test passed because it passed at least once.'
rebot -l final_log.html --prerebotmodifier TestStatusChecker.py --merge 1.xml 2.xml 3.xml 4.xml
report