Robot Framework数据库连接报错:无效变量名及主机名问题
Robot Framework数据库连接变量无效报错解决
问题现象
执行数据库操作脚本时,出现变量名无效错误,套件初始化失败,提示找不到${DBHost}等变量,错误信息如下:
(venv) PS D:\pythonProject1> robot testcase\DataBase.robot [ ERROR ] Error in file 'D:\pythonProject1\testcase\DataBase.robot' on line 12: Setting variable ' ${DBHost}' failed: Invalid variable name ' ${DBHost}'. [ ERROR ] Error in file 'D:\pythonProject1\testcase\DataBase.robot' on line 13: Setting variable ' ${DBUser}' failed: Invalid variable name ' ${DBUser}'. [ ERROR ] Error in file 'D:\pythonProject1\testcase\DataBase.robot' on line 14: Setting variable ' ${DBPass}' failed: Invalid variable name ' ${DBPass}'. [ ERROR ] Error in file 'D:\pythonProject1\testcase\DataBase.robot' on line 15: Setting variable ' ${DBName}' failed: Invalid variable name ' ${DBName}'. [ ERROR ] Error in file 'D:\pythonProject1\testcase\DataBase.robot' on line 16: Setting variable ' ${DBPort}' failed: Invalid variable name ' ${DBPort}'. ============================================================================== DataBase ============================================================================== Create Person table | FAIL | Parent suite setup failed: Variable '${DBHost}' not found.
原脚本代码:
*** Settings *** Library SeleniumLibrary Library OperatingSystem Library DatabaseLibrary Suite Setup Connect To Database pymysql ${DBHost} ${DBUser} ${DBPass} ${DBName} ${DBPort} Suite Teardown Disconnect From Database *** Variables *** ${DBHost} EMB-BAN-810 ${DBUser} root ${DBPass} Sql@123 ${DBName} robot_db ${DBPort} 3306 *** Test Cases *** Create Person table ${output}= Execute SQL String Create table person(id integer,first_name varchar(20),Last_name varchar(20)) log to console ${output} Should be equal as Strings ${output} None
问题原因
*** Variables ***部分的每个变量名前存在多余空格,Robot Framework对变量名格式要求严格,变量名${DBHost}等前面不能有前置空格,否则会被判定为无效变量名,导致变量无法被识别。
修正后的代码
移除变量名前的多余空格即可:
*** Settings *** Library SeleniumLibrary Library OperatingSystem Library DatabaseLibrary Suite Setup Connect To Database pymysql ${DBHost} ${DBUser} ${DBPass} ${DBName} ${DBPort} Suite Teardown Disconnect From Database *** Variables *** ${DBHost} EMB-BAN-810 ${DBUser} root ${DBPass} Sql@123 ${DBName} robot_db ${DBPort} 3306 *** Test Cases *** Create Person table ${output}= Execute SQL String Create table person(id integer,first_name varchar(20),Last_name varchar(20)) log to console ${output} Should be equal as Strings ${output} None
额外提示
如果后续仍出现“无效主机名”错误,需检查:
- 数据库主机名
EMB-BAN-810是否能被当前机器解析(可尝试用ping EMB-BAN-810验证) - 数据库服务是否正常运行,端口3306是否开放
- 数据库账号密码是否正确,是否有权限访问指定数据库
robot_db
内容的提问来源于stack exchange,提问作者phanee
相关产品推荐
相关产品推荐

