在 runtime/at 请求时间计算的变量值

Variable value calculated at runtime/at request time

我正在尝试找到一种方法来评估每次使用变量的值。这与 Robot Framework 的正常操作相反 - 变量在定义时设置。

考虑这个例子——一个 py 变量文件:

import random


MY_VAR = random.randint(1,100)

该变量将被设置为一个 int,然后在每次使用时保留它的值。因此在这个调用中使用时:

Log To Console    Value ${MY VAR}, again ${MY VAR}

,将打印相同的数字。

我考虑过的:


基本上,我需要一个 python 的 @property 装饰器(半)普通机器人框架变量,或者传递一个方法调用作为参数:)

您可以使用inline python evaluation 来执行变量中的函数。在下面的例子中,不同的随机数将被记录三次:

*** Test cases ***
Example
    log  ${{random.randint(1, 100)}}
    log  ${{random.randint(1, 100)}}
    log  ${{random.randint(1, 100)}}

如果调用是针对用户创建的方法(不在已安装的包中),则为 module_name.method_name()。例如,如果模块 my_module.py 中有一个方法 my_method(param1),调用方法如下:

Log  ${{my_modlue.my_method('arg')}}

如果目标是RF关键字,那就有点麻烦了——需要使用BuiltInclass中的run_keyword()方法。示例 - 调用关键字 My Keyword:

Log  ${{robot.libraries.BuiltIn.BuiltIn().run_keyword('argument1')}}