我正试图找到一种方法,每次使用变量时都要计算它的值。这与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')}}