机器人框架:测试用例无法加载在测试套件的父测试套件文件夹中导入的资源文件中的关键字

时间:2018-06-11 05:08:19

标签: robotframework robotframework-ide

enter image description here

嗨,我正在使用机器人框架来自动测试网站,上面的图片是RIDE中的测试结构:

  • 测试:测试套件文件夹,我在这里导入资源文件,该文件位于" init .robot"在文件夹
  • Sub1:子测试套件,无需导入
  • 测试:测试用例

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

1 个答案:

答案 0 :(得分:2)

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

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

<强> resources.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文件中导入的任何关键字在该文件之外都不可用。 “{3}}上的机器人框架用户指南”部分对此进行了清晰描述。

也就是说,如果在每个套件文件中包含主资源文件的努力是不合需要的,那么另一种方法是在每个套件的开头使用监听器加载资源文件。有关听众的文档,请访问:Initialization files

一个新的例子:

<强> AddResourceListener.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')

<强> resource.robot

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

<强> TestCase.robot

*** Test Cases ***
TC
    Resource Keyword

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