目前本人刚接触robotframework自动化测试不久,目前需要在用例之前的setup中删除Oracle数据库的信息。这里涉及到Oracle数据库的连接注意事项。

安装自动化框架环境的cx_Oracle版本是5.1.2robotframework中调用cx_oracle报错问题解决

问题:执行测试用例时报错,如图:

robotframework中调用cx_oracle报错问题解决

IMPORTERROR:dll LOAD FAILED......

看提示是dll文件未加载进来,由于是调用Oracle系统,需要涉及到3个非常重要的dll文件,分别是:

 oraocci11.dll  oraociei11.dll  ocri.dll。
解决方案:
网上下载64位的instatntclient 将其中的三个dll文件复制到Python安装目录下的Lib/sitepackage。

robotframework中调用cx_oracle报错问题解决
重启ride
发现报错发生了变化,可以证明dll文件生效了。新的报错如下图:
robotframework中调用cx_oracle报错问题解决
检查D:\Program Files\instantclient_11_2\NETWORK\ADMIN\tnsnames.ora里面数据库连接信息是否正确,robotframework中调用cx_oracle报错问题解决
配置环境变量

ORACLE_HOME  TNS_ADMIN 并加到系统path中,重启ride。

遇到最烦人的问题就是编码问题,python 是Unicode编码,需要将str decode为Unicode,再encode为utf-8
robotframework中调用cx_oracle报错问题解决



解决办法:
自行百度的一种方法:需要在Lib/site-packages/下新建一个文件sitecustomize.py  内容如下:
# -*- coding: utf-8 -*-  
import sys  
import os   
import cx_Oracle  
reload(sys)  
sys.setdefaultencoding('utf-8')  
os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'  (我的机器这行必须要填写)

成功解决ascii code解码问题







泪奔,这个破问题解决了好长时间,终于Python可以调用Oracle数据库了

相关文章: