Robot Framework 3.1.1如何将字符串作为代码执行?
问题解决:Robot Framework动态执行JSON中的关键字命令
错误原因分析
你当前的错误是误用了robot.run()函数——这个函数的作用是运行整个Robot测试套件,并非用来调用单个关键字。而且直接把Open Connection host1这类带空格的字符串传入robot.run(),Python会将空格分割的内容当成多个未定义变量,直接触发语法错误。
正确解决方案
Robot Framework内置了Run Keyword关键字,专门用来动态执行其他关键字,完全适配你的需求。
基础版(适用于参数无空格的场景)
修改代码如下:
${source_data}= OperatingSystem.Get File ${CURDIR}/auth.json ${data}= Evaluate json.loads($source_data) json : FOR ${command} IN @{data["host1"]} \ Run Keyword ${command}
Run Keyword会自动将字符串按空格拆分,把第一部分识别为关键字名,后面的内容作为关键字参数,完美匹配Robot的语法逻辑。
进阶版(适配参数带空格的场景)
如果命令参数里包含空格(比如主机名为test server 01),建议修改JSON结构,把每个命令拆成「关键字+参数」的列表形式,避免拆分错误:
{ "host1" : [ ["Open Connection", "test server 01"], ["Login", "test server 01", "admin", "123456"] ] }
对应的Robot代码调整为:
${source_data}= OperatingSystem.Get File ${CURDIR}/auth.json ${data}= Evaluate json.loads($source_data) json : FOR ${kw_info} IN @{data["host1"]} \ Run Keyword @{kw_info}
这种方式更严谨,能处理各种复杂参数场景。
内容的提问来源于stack exchange,提问作者user24501621
相关产品推荐
相关产品推荐

