目前本人刚接触robotframework自动化测试不久,目前需要在用例之前的setup中删除Oracle数据库的信息。这里涉及到Oracle数据库的连接注意事项。
安装自动化框架环境的cx_Oracle版本是5.1.2
问题:执行测试用例时报错,如图:
IMPORTERROR:dll LOAD FAILED......
看提示是dll文件未加载进来,由于是调用Oracle系统,需要涉及到3个非常重要的dll文件,分别是:
oraocci11.dll oraociei11.dll ocri.dll。
解决方案:
网上下载64位的instatntclient 将其中的三个dll文件复制到Python安装目录下的Lib/sitepackage。
重启ride
发现报错发生了变化,可以证明dll文件生效了。新的报错如下图:
检查D:\Program Files\instantclient_11_2\NETWORK\ADMIN\tnsnames.ora里面数据库连接信息是否正确,
配置环境变量
ORACLE_HOME TNS_ADMIN 并加到系统path中,重启ride。
遇到最烦人的问题就是编码问题,python 是Unicode编码,需要将str decode为Unicode,再encode为utf-8
解决办法:
自行百度的一种方法:需要在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' (我的机器这行必须要填写)
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数据库了