在运行时/请求时计算的变量值



我正试图找到一种方法,每次使用变量时都要计算它的值。这与Robot Framework的正常操作相反——变量是在定义时设置的。

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

import random

MY_VAR = random.randint(1,100)

变量将被设置为int,然后在每次使用时保持其值。因此,当用于此调用时:

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

,将打印相同的数字。

我所考虑的:

  • 一个关键字/方法,用于计算&返回值,并在下一行使用该值。实际上并不可行,在我的用例中,这些变量被使用了数百次,这增加了样板和隐含知识("每次使用之前必须使用该方法!"(
  • 侦听器接口,_start_suite,或大小写或关键字-这是最接近";构造函数";在框架中;负-在相应级别执行一次,会增加运行时开销

基本上,我需要在(半(正常的Robot Framework变量上使用python的@property装饰器,或者将方法调用作为参数传递:(

您可以使用内联python求值来执行变量中的函数。在以下示例中,不同的随机数将被记录三次:

*** 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关键字,那就有点麻烦了——需要在BuiltIn类中使用run_keyword()方法。示例-调用关键字My Keyword:

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

最新更新