首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Robotframework: teardown失败时的行为

Robotframework: teardown失败时的行为
EN

Stack Overflow用户
提问于 2016-02-20 05:11:35
回答 2查看 4K关注 0票数 1

我正在尝试理解当Test teardown出现故障时Robot的行为。

从概念上讲,我认为如果一个测试用例完成了执行,它应该被认为是通过的。teardown不是测试的一部分,所以如果Teardown中有失败,测试用例仍然应该标记为通过。我观察到的行为是,如果测试teardown失败,测试用例也会失败。这是应该发生的吗,有什么方法可以改变它吗?

当Suite teardown失败时,我也看到了一些奇怪的事情。

控制台输出将测试用例显示为已通过,并在用例旁边显示|PASS|。但是,输出底部的统计信息将所有情况显示为失败。

下面是一个例子:

代码语言:javascript
复制
*** 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

和输出:

代码语言:javascript
复制
==============================================================================
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,或者有什么方法可以修复它吗?

EN

回答 2

Stack Overflow用户

发布于 2016-02-20 15:09:29

有时拆卸测试失败是一个重要的问题,例如,清理工作没有完成,这会导致其他测试用例失败。因此,如果测试用例在拆卸时失败,robot框架将始终报告FAIL。如果关键字失败对您的测试用例不是问题,请使用Run Keyword And Ignore Error

代码语言:javascript
复制
*** Keywords ***
Teardown
    Run Keyword And Ignore Error    Should Be Equal     1       2

但是,您应该注意,如果关键字失败,则不会报告任何内容,除非您检查输出日志中的详细信息。

在所有测试用例完成后,套件拆分运行。第一个测试用例通过,程序打印PASS。在此之后,套件拆卸运行并失败,因此程序打印FAIL。这是预期的结果。如果在一个套件中有更多的测试用例,则更容易理解,例如:

代码语言:javascript
复制
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的。

票数 1
EN

Stack Overflow用户

发布于 2017-01-05 22:49:50

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

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

代码语言:javascript
复制
def create_test(id= 'sx-tx', name='Test'):
return ET.Element("test", attrib={'id': id, 'name': name})

我将teardown内部代码复制到新的测试中,并使用'rebot‘从新的xml生成xml。这使得Teardown成为一个测试,因此它只显示一个失败。

如果你愿意,我可以详细说明。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35515110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档