【问题标题】:How using global arguments within .resource files in robot framework?如何在机器人框架的 .resource 文件中使用全局参数?
【发布时间】:2021-01-05 03:16:59
【问题描述】:

我想建立一个可维护的机器人框架环境。因此,我想创建一些带有常用关键字的“.resource”文件。在“.resource”文件中是一个需要参数的导入库。但我找不到将参数从“.robot”文件传递到“.resource”文件的方法。

问题:

[ ERROR ] Error in file '/Robustness_yocto.robot' on line 9: Setting 'Resource' accepts only one value, got 2.

“.resource”文件:

*** Settings ***

Variables   ../instructions/UsbMuxInstuctions.py

Library     BuiltIn
Library     ../library/SerialLibrary.py     _port=${device}  WITH NAME    Device
...
...
...

“.robot”文件:

*** Settings ***

Variables   ../instructions/DeviceInstuctions.py

Library     BuiltIn
Library     Process
Resource    ../resources/Device.resource    device=/dev/ttyACM0

Suite Setup         Setup
Suite Teardown      Teardown
...
...
...

为什么 device=/dev/ttyACM0 语法不起作用?您会为此用例推荐什么解决方案?

【问题讨论】:

    标签: resources robotframework


    【解决方案1】:

    您不能在资源文件导入中传递参数,但您可以尝试其他替代方法。

    1. 您可以为带有参数的资源文件创建一个init关键字,您可以在其中调用Import Library关键字在运行时动态导入库。这个 init 关键字可以在套件设置中调用。实际上,这将充当资源文件的“构造函数”。

    2. 您可以将导入保留在资源文件中,并将全局变量传递给库。此全局变量可以初始化为某个默认值,但您可以在每次运行时从 command line 覆盖它。

      Library     ../library/SerialLibrary.py     _port=${DEVICE}  WITH NAME    Device
      
      --------------------------------------------------------------------------------
      
      robot --variable DEVICE:/dev/ttyACM0 your_tests.robot
      
    3. 您可以编写 library 代替资源文件,在其中您可以实现资源文件中的关键字,同时能够在导入时传递参数。

      请注意,您也可以从 Python 中导入任何机器人库,并调用它们的关键字,因此这里没有限制。

    【讨论】:

    • 感谢您的帮助。我是否必须手动调用“init 关键字”或者是否存在在导入期间调用关键字的解决方案?我可以像使用 "Library + WITH NAME" 一样创建两个资源实例吗?
    • @user3129255 您必须手动调用。不,您不能“命名”资源文件,但我也添加了第三个选项。
    • 感谢您添加第三个选项。库必须用 Python 或 Java 编写。我不能使用机器人框架语法,不是吗?
    • @user3129255 不,它应该用 Python 编写,使用 Python 语法。
    猜你喜欢
    • 2018-05-11
    • 2022-01-02
    • 2013-03-01
    • 1970-01-01
    • 2020-08-30
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    相关资源
    最近更新 更多