我正在尝试使用从命令行传入变量的单个测试用例来测试多个环境。使用以下命令行:
robot --variable TESTENV:prod advertisingdisclosure_Page.robot
Run Code Online (Sandbox Code Playgroud)
我需要测试 TESTENV 的值,并根据传入的值将不同的变量(特别是 URL)设置为适当的值。在测试用例的第一个关键字部分中使用以下代码时,我收到错误:
IF ${TESTENV} == "uat"
$(MAIN_URL)= Set Variable ${env_data['uat_url']}
ELSE IF ${TESTENV} == "dev"
${MAIN_URL}= Set Variable ${env_data['dev_url']}
ELSE IF ${TESTENV} == "prod"
${MAIN_URL}= Set Variable ${env_data["prod_url"]}
ELSE
Fail "No URL specified"
END
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Evaluating expression 'prod' failed: NameError: name 'prod' is not defined nor importable as module
Run Code Online (Sandbox Code Playgroud)
我找到的示例展示了如何直接使用全局变量,但没有展示如何评估它的特定值。
帮助。
杰夫
您需要在变量名称两边加上引号 - 否则框架只是将其值放入,然后将该表达式传递给 python。因此,它就变成了prod == '"uat",并且 py 正确地抱怨没有定义的变量prod。
修复很简单 - 只需将用法括在引号中,替换后这将成为字符串比较:
"${TESTENV}" == "uat"
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用另一种语法 - 没有大括号,它告诉 RF 使用/传递变量本身,而不是它的值,然后它将成为 python 的定义变量:
$TESTENV == "uat"
Run Code Online (Sandbox Code Playgroud)