Robot Framework判断命令行传入变量时报name is not defined错误
Robot Framework 多环境变量判断报错解决方案
错误根因
报错是因为Robot Framework IF表达式的解析规则导致:你在判断条件中直接使用${TESTENV}取字符串类型变量时,框架会直接把变量值代入表达式,不会自动添加字符串引号。当你传入TESTENV=prod时,实际执行的判断逻辑变为prod == "uat",Python会将prod识别为未定义的变量,因此抛出NameError。
同时你代码第一行存在笔误,变量赋值用了小括号$(MAIN_URL),不符合Robot Framework变量语法规则。
修复后的代码
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
核心修改点
- 所有判断条件中的
${TESTENV}用双引号包裹,确保变量值被解析为字符串参与比较 - 把变量赋值的
$(MAIN_URL)修正为${MAIN_URL},使用正确的大括号变量标识
更简洁的优化方案
你可以直接用TESTENV的值拼接字典key,省去多分支判断逻辑,代码更易维护:
${MAIN_URL}= Set Variable ${env_data["${TESTENV}_url"]}
内容的提问来源于stack exchange,提问作者Jeff
相关产品推荐
相关产品推荐

