Robotframework 机器人框架:拆卸失败时的行为
我试图了解当测试拆卸失败时机器人的行为 从概念上讲,我认为如果一个测试用例完成了执行,就应该认为它通过了。拆卸不是测试的一部分,因此如果拆卸失败,测试用例仍应标记为通过。我观察到的行为是,如果测试拆卸失败,测试用例就会失败。这是应该发生的吗?有没有办法改变它 当套件拆卸失败时,我也看到了一些奇怪的事情 控制台输出将测试用例显示为已通过,并在用例旁边显示Robotframework 机器人框架:拆卸失败时的行为,robotframework,Robotframework,我试图了解当测试拆卸失败时机器人的行为 从概念上讲,我认为如果一个测试用例完成了执行,就应该认为它通过了。拆卸不是测试的一部分,因此如果拆卸失败,测试用例仍应标记为通过。我观察到的行为是,如果测试拆卸失败,测试用例就会失败。这是应该发生的吗?有没有办法改变它 当套件拆卸失败时,我也看到了一些奇怪的事情 控制台输出将测试用例显示为已通过,并在用例旁边显示| PASS |。但是,输出底部的统计信息显示所有案例都失败 下面是一个例子: *** Settings *** Suite Teardown
| PASS |
。但是,输出底部的统计信息显示所有案例都失败
下面是一个例子:
*** Settings ***
Suite Teardown Teardown
*** Keywords ***
Setup
Log to Console setup
Teardown
Should Be Equal 1 2
*** Test Cases ***
case1
[Setup] Setup
Log To Console case
以及输出:
==============================================================================
Test
==============================================================================
case1 setup
.case
case1 | PASS |
------------------------------------------------------------------------------
Test | FAIL |
Suite teardown failed:
1 != 2
1 critical test, 0 passed, 1 failed
1 test total, 0 passed, 1 failed
==============================================================================
这简直令人困惑。测试通过,并显示为通过,但在统计信息中标记为失败。这是一个bug,还是有什么方法可以修复它?有时测试在拆卸时失败是一个重要问题,例如,清理没有完成,它会导致其他测试用例失败。因此,如果测试用例在分解过程中失败,robot框架总是报告
FAIL
。如果关键字failure不是测试用例的问题,请使用:
*** Keywords ***
Teardown
Run Keyword And Ignore Error Should Be Equal 1 2
但是,您应该注意,如果关键字失败,除非检查输出日志中的详细信息,否则不会报告任何内容
所有测试用例完成后,套件分解将运行。第一个测试用例通过,程序打印PASS
。在这之后,套件分解运行并失败,因此程序打印FAIL
。这是预期的结果。如果一个套件中有更多的测试用例,则更容易理解,例如:
Test suite A
run case 1 ----> print PASS
run case 2 ----> print PASS
run case 3 ----> print PASS
run suite teardown ----> print FAIL (and change case 1, 2, 3 to FAIL)
在robot框架中,拆卸失败与测试用例失败相同,因此robot框架最终报告所有测试用例失败。检查输出
log.html
,您可以看到所有测试用例都失败
我想出了一个可能有用也可能无用的解决方案。我们有一个Jenkins集成,Jenkins将报告所有这些我希望看到通过的测试失败。我所做的不是从robot生成html,而是xml
然后,我使用etree创建了一个新的测试xml标记
def create_test(id= 'sx-tx', name='Test'):
return ET.Element("test", attrib={'id': id, 'name': name})
我将拆卸内部构件复制到新测试中,并使用“rebot”从新xml生成xml。这使得拆卸成为一项测试,因此它只显示了一次失败
如果你愿意,我可以详细说明 您是如何从XML生成HTML的?@Payam robot的
reboot
命令将从下一个XML重新创建HTML