RobotFramework自动化测试连接Oracle数据库报DPI-1047错误求助
解决RobotFramework连接Oracle数据库DPI-1047报错方案
操作步骤
- 处理Oracle Instant Client安装:你找不到可执行文件是因为Windows版64位Oracle Instant Client本身就是免安装压缩包,无需运行安装程序。下载和你要连接的Oracle服务端大版本兼容的
instantclient-basic-windows.x64-xxx.zip包,直接解压到本地无中文、无空格的路径下即可,示例路径:C:\Oracle\instantclient_19_18。 - 配置系统环境变量:
- 把刚才解压的Instant Client根目录路径,添加到系统环境变量
Path的最顶部,避免和其他版本Oracle客户端冲突 - 新增系统环境变量
TNS_ADMIN,值同样设置为Instant Client的根目录路径 - 新增系统环境变量
NLS_LANG,值根据数据库字符集设置,常用值为SIMPLIFIED CHINESE_CHINA.AL32UTF8,可避免查询结果中文乱码
- 把刚才解压的Instant Client根目录路径,添加到系统环境变量
- 重启运行环境:环境变量修改后需要完全关闭所有命令行、IDE工具后重新打开,确保环境变量生效
- 验证cx_Oracle适配性:在你运行RobotFramework的Python环境中执行
import cx_Oracle,如果无报错说明客户端配置生效;如果仍报错可以执行pip uninstall cx-Oracle后重新安装和Instant Client大版本匹配的cx_Oracle版本,比如Instant Client为19.x版本时,安装8.3及以上版本的cx_Oracle即可 - 补充可选兼容配置:如果环境变量配置后仍不生效,可以在连接数据库的关键字开头增加代码手动指定客户端路径,示例:
*** Keywords *** Connect to database Evaluate cx_Oracle.init_oracle_client(lib_dir=r"C:\Oracle\instantclient_19_18") cx_Oracle Connect To Database Using Custom Params cx_Oracle ... user='${DBUSER}', password='${DBPASS}', dsn='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=${DBHOST})(PORT=${DBPORT})))(CONNECT_DATA=(SID=${DBName})))'
你原有测试用例逻辑不需要修改。
内容的提问来源于stack exchange,提问作者Maria
相关产品推荐
相关产品推荐

