2016-02-19 72 views
0

我试图了解在测试拆卸失败时机器人的行为。机器人框架:拆卸失败时的行为

从概念上讲,我会认为如果测试用例完成执行,应该考虑通过。拆解不是测试的一部分,因此如果拆解失败,测试用例仍应标记为通过。我观察到的行为是,如果测试拆卸失败,则测试用例失败。这是应该发生的,有什么方法可以改变它吗?

当套件拆卸失败时,我也看到一些奇怪的东西。

控制台输出显示测试案例已通过,在案例旁边显示|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 
============================================================================== 

这只是混乱。测试通过,并显示为已通过,但在统计信息中标记为失败。这是一个错误,还是有一些方法来解决它?

回答

1

有时测试在拆卸失败是一个重要的问题,例如,清理没有完成,并导致其他测试案例失败。因此,如果测试案例在拆卸失败时机器人框架总是报告FAIL。使用Run Keyword And Ignore Error如果关键字失败是不是一个问题,您的测试案例:

*** 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) 

和拆除失败是机器人框架一样测试用例失败,因此机器人框架报告中的所有测试案例失败的结束。检查输出log.html,你可以看到所有的测试用例都是FAIL

0

我想出了一个可能有用或不可用的解决方案。我们有一个Jenkins集成,Jenkins将报告我希望看到的所有这些测试失败通过。我所做的不是从机器人生成html,而是生成xml。

然后我使用etree创建一个新的测试xml标记。

def create_test(id= 'sx-tx', name='Test'): 
return ET.Element("test", attrib={'id': id, 'name': name}) 

我复制拆卸内部到新的测试,并用于“rebo​​t”来产生来自新的XML的XML。这使得Teardown成为一项测试,因此它只显示出一次失败。

我可以详细说明您是否愿意。

相关问题