1

在此处输入图像描述

您好,我正在使用机器人框架对网站进行自动化测试,上图是 RIDE 中的测试结构:

  • test:一个测试套件文件夹,我这里导入资源文件,在文件夹下的“ init.robot
  • Sub1:子测试套件,不导入任何内容
  • 测试:一个测试用例

我的问题是:在测试用例“test”中,机器人无法识别“Test”测试套件文件夹中导入的关键字,因为会有更多的子测试套件,如sub2,sub3,我如何在一个地方导入资源? 我不想在每个测试套件中导入资源文件,有没有办法做到这一点?

4

1 回答 1

3

您可以链接导入。下面是一个这样的链和重用的例子。在这个例子中,我们有一个resources.robot导入所有不同文件的单一sub*.robot文件。这是导入这些的唯一文件。

然后有两个testcases*.robot文件继续导入resources.robot并能够访问sub*.robot关键字的内容。

资源.机器人

*** Settings ***
Resource    ../resources/sub1.robot
Resource    ../resources/sub2.robot
Resource    ../resources/sub1.robot

testcases1.robot

*** Settings ***
Resource    ../resources/resources.robot

*** Test Cases ***
TC
   No Operation

testcases2.robot

*** Settings ***
Resource    ../resources/resources.robot

*** Test Cases ***
TC
   No Operation

正如评论中所讨论的,文件中导入的任何关键字在该__init__.robot文件之外均不可用。这在 Robot Framework User Guide 部分的初始化文件中有清楚的描述。

也就是说,如果不希望在每个套件文件中包含主资源文件,那么另一种方法是在每个套件的开头使用侦听器加载资源文件。可以在此处找到有关侦听器的文档:Docs

一个新的例子:

添加资源监听器.py

from robot.libraries.BuiltIn import BuiltIn

class AddResourceListener(object):
    ROBOT_LISTENER_API_VERSION = 2

    def __init__(self):
        pass

    def start_suite(self, name, attributes):
        BuiltIn().import_resource('${EXECDIR}/resource.robot')

资源机器人

*** Keywords ***
Resource Keyword
    Log    "Keyword Executed from Resource File"

测试用例机器人

*** Test Cases ***
TC
    Resource Keyword

然后使用附加参数运行您的常规机器人命令,--listener AddResourceListener.py无论是否导入关键字,您都可以使用该关键字。

于 2018-06-11T07:23:36.267 回答