如何从robot框架向python函数传递布尔变量

2024-09-30 20:17:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我是robot框架的新手,继承了一些.robot文件,这些文件调用了一些python函数

在.robot文件中,我们将一些变量定义为:

| *** Variables ***  |
| ${file}            | 2021
| ${useV2}           | False

但是,当调用python函数并运行此代码时:

log.info(f“{useV2},类型:{type(useV2)}”)

输出是

False , type: <class 'str'>

除了检查这个函数中的“False”和“True”,以及需要的后续函数外,我如何将robot框架变量设置为布尔值,并让python准确地派生True/False


Tags: 文件函数代码info框架logfalsetrue
2条回答

旧的RF版本总是将参数作为字符串传递给python land。因此,python代码应该总是对适当的类型执行类型转换。这里有一个关于这个主题的问题:https://github.com/robotframework/robotframework/issues/2890

如果python代码中有参数的类型注释,则更新版本会执行类型转换if

所以,我假设您的python函数是RF中的一个关键字,没有类型注释

两个选项-使用语法将其声明为实际的布尔类型:

${useV2}           ${False} 

(这也适用于声明int或float),或者使用关键字Convert To Boolean,处理字符串“True”和“False”:

${useV2}=    Convert To Boolean    ${useV2}

用户指南中讨论此变量语法的部分-http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#boolean-and-none-null-variables;整数/浮点数在上面的章节中进行了描述


这是一个样本;使用此机器人框架代码:

*** Variables ***
${booly}      ${True}
${stringy}    True

*** Test Cases ***
A test
    Do It       ${booly}
    Do It       ${stringy}
    ${cast to booly}=       Convert To Boolean      ${stringy}
    Do It       ${cast to booly}

,以及此python函数:

from robot.libraries.BuiltIn import BuiltIn

def do_it(useV2):
    BuiltIn().log_to_console(f"{useV2} , type: {type(useV2)}")

,控制台中的输出为:

True , type: <class 'bool'>
True , type: <class 'str'>
True , type: <class 'bool'>

例如,定义为${True}的变量是<class 'bool'>,定义为True的变量是<class 'str'>,后者在经过Convert To Boolean之后成为bool本身

相关问题 更多 >