【问题标题】:robot framework: test case cannot load keyword in resource file that import in the test suite's parent test suite folder机器人框架:测试用例无法在测试套件的父测试套件文件夹中导入的资源文件中加载关键字
【发布时间】:2018-11-20 07:05:34
【问题描述】:

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

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

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

【问题讨论】:

    标签: robotframework robotframework-ide


    【解决方案1】:

    您可以链接导入。下面是一个这样的链和重用的例子。在此示例中,我们有一个 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
    

    正如 cmets 中所讨论的,在 __init__.robot 文件中导入的任何关键字在该文件之外均不可用。这在Initialization files 的机器人框架用户指南部分中有明确描述。

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

    一个新的例子:

    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 运行常规机器人命令,无论是否导入关键字,您都可以使用该关键字。

    【讨论】:

    • 根据用户,他不想在每个套件中导入资源文件,我不确定是否有其他方法。
    • @pankajmishra 是的,这就是重点,顶层是一个测试套件目录,在这个顶层测试套件目录下是一些测试套件,我想在顶层测试导入我的资源文件套件目录,这样我就不需要在所有子测试套件中一一导入我的资源文件
    • @yyzhang14922。初始化文件不是解决方案,因为文档清楚地指出加载的任何关键字在实际测试用例中都不可用。
    • @pankajmishra 抱歉,错过了。
    猜你喜欢
    • 2017-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-25
    • 1970-01-01
    • 2020-08-06
    相关资源
    最近更新 更多