You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 09:23:23