如何在机器人框架的 .resource 文件中使用全局参数?

How using global arguments within .resource files in robot framework?

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

问题:

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

“资源”文件:

*** Settings ***

Variables   ../instructions/UsbMuxInstuctions.py

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

“机器人”文件:

*** 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 语法不起作用?对于这个用例,您会推荐什么解决方案?

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

  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 导入任何 Robot 库,并调用它们的关键字,因此这里没有任何限制。