当前位置: 首页 > 面试题库 >

Robot Framework中相互依赖的测试自动失败/不执行

沃皓轩
2023-03-14
问题内容

我有大量的测试用例,其中几个测试用例是相互依赖的。在执行后面的测试用例时,是否有可能找到先前执行的测试用例的状态?就我而言,第99个测试用例取决于某些先前测试用例的状态,因此,如果第24个或第38个测试用例失败,我希望第99个测试用例根本不执行,从而节省了很多时间。请在可能的情况下举例说明。提前致谢!


问题答案:

一旦机器人开始运行,就无法根据某种条件跳过测试。我认为这是机器人的弱点之一,但设计人员似乎真的不喜欢跳过测试的概念。而且,没有一种内置方法可以使一个测试依赖另一个。一本非常有特点的请求被拒绝。

但是,robot具有非常强的可扩展性,并且2.8.5版中引入的一项功能可以轻松编写一个关键字,如果另一个测试失败,该关键字将会失败。此功能是库可以充当侦听器的功能。这样,库可以跟踪每个测试的通过/失败状态。有了这些知识,您可以创建一个关键字,如果某个其他测试失败,该关键字将立即失败。

基本思想是,在每次测试完成时(通过特殊_end_test方法)缓存通过/失败状态。然后,使用此值确定是否立即失败。

这是如何使用这样的关键字的示例:

*** Settings ***
| Library | /path/to/DependencyLibrary.py

*** Test Cases ***
| Example of a failing test
| | fail | this test has failed

| Example of a dependent test
| | [Setup] | Require test case | Example of a failing test
| | log | hello, world

这是库的定义:

from robot.libraries.BuiltIn import BuiltIn

class DependencyLibrary(object):
    ROBOT_LISTENER_API_VERSION = 2
    ROBOT_LIBRARY_SCOPE = "GLOBAL"

    def __init__(self):
        self.ROBOT_LIBRARY_LISTENER = self
        self.test_status = {}

    def require_test_case(self, name):
        key = name.lower()
        if (key not in self.test_status):
            BuiltIn().fail("required test case can't be found: '%s'" % name)

        if (self.test_status[key] != "PASS"):
            BuiltIn().fail("required test case failed: '%s'" % name)

        return True

    def _end_test(self, name, attrs):
        self.test_status[name.lower()] = attrs["status"]


 类似资料:
  • 问题内容: 我正在开发一个小型Java EE Hibernate Spring应用程序,出现错误: 这是我的控制器ArticleControleur,其中包含用于恢复文章列表的功能: 这是我的articleService: 这是我的应用程序上下文: 问题答案: 该错误表明不是注册的Bean。添加其中包含将在你的应用程序上下文中自动装配的bean的软件包: 或者,如果你想将所有子包包括在com.bd

  • 问题内容: 我已经搜索了很多,但是我发现的主要是python中的递归编程示例。因此,问题来了: 我该如何实现? 问题答案: 一切在Python中都是动态的-甚至是类声明。在初始声明之后,没有什么可以阻止您修改类的内容的: 注意:如果您不太熟悉Python,则该关键字仅允许您说“这里什么都没有”-除非A类的空值与本例中的一样空,否则它并不重要!

  • 大家好,我收到下一个错误,我是使用Hibernate的新手

  • 我在Jenkins的plugin,这个插件可以运行现场测试,但不能由调度器自动运行。这个提供了按钮,但我必须自己点击它。 问题:我可以对按钮或任何其他建议进行变通吗? 目标是:再次自动运行失败的测试。

  • 我想通过RobotFramework测试桌面电子应用程序。我下载了Selenium2Library,在网上看到了一些关于这方面的文章。我使用以下文本为变量创建vars.py:

  • 我试图用jenkins execution命令测试我的java项目,但是我得到了以下错误消息: 有关单个测试结果,请参阅/var/jenkins_home/workspace/test1/target/surefire-reports。请参阅转储文件(如果存在)[date].dump,[date]-jvmrun[N].dump和[date].dumpstream。分叉的VM在没有正确地说再见的情况