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