DatabaseLibrary是一个基于Robotframework的测试库,用来对数据库进行操作,基本上常见的数据库都可以用DatabaseLibrary。下面来介绍一下基于Oracle的DatabaseLibrary安装部署方法。
1、安装DatabaseLibrary
下载地址:https://pypi.python.org/pypi/robotframework-databaselibrary/0.6
下载后,解压到python安装目录中,打开命令窗口,进入上面目录(或可在安装目录中按住shift-右键-在此处打开命令窗口直接输入命令)进入安装目录,输入命令:python setup.py
install,等待安装完成。
2、安装cx_orcle支持库
下载地址:https://sourceforge.net/projects/cx-oracle/files
注意:
(1)根据自己的实际情况确定需要的文件。cx_orcle版本要与python版本和位数一致。怎么看Python位数,在命令行运行Python,查看提示信息:
Python2.7.13 (v2.7.13:a06454b1afa1, Dec 17 2016, 20:42:59) [MSC v.150064 bit(Intel)] on win32
其中,中括号MSC这一段64bit代表Python位数是64位的。如果写的是32bit那就是32位的。
(2)与Oracle数据库版本一致
cx_Oracle文件名明确了所需要信息,根据自己的需要,找到正确的文件。如:
cx_Oracle-5.2.1-11g.win-amd64-py2.7.exe
说明:cx_Oracle-5.2.1是cx_Oracle本身的版本号,11g表明这个安装包支持的Oracle数据库版本,win-amd64表明这是64位的,py2.7是指2.7系列的Python。
选对了cx_Oracle的安装文件,下载后运行安装就可以了。
3、安装instantclient
下载地址:
http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html
需重点关注dll,并不一定需要本机安装Oracle客户端,安装了也没关系,不需要卸载,只要保证放在site-packages里的dll是对的就可以。
Oracle数据库的dll一般都有对应的instant-client包,包里有需要的dll文件。
如果从首页进入是点这里:
然后进入这个链接页面:
如果选择Windows (x64)会进入如下页面:
这里列出不同平台、不同位数的instant-client,同样的,要选择和你的Python位数对应包,而不是和Windows位数对应的。比如选择一个Windows64位的,进入下载页面,记得勾选Accept License Agreement同意才能下载。 这个页面下面列了很多个版本,每个版本下面还有很多不同的包,我们需要的是All files的这个包,也就是每个版本下面的第一个下载链接。这个页面有12.x和11.x,还有10.x的,也就对应着12c、11g、10g,每个大版本下面还有若干小版本的,一般选最新的就好,或者自己随便选。选择之后,可能需登录,没用户的可以注册一下。
下载完成之后,随便找个地方解压缩,在里面找到这几个dll,11g的需要3个,12g的需要4个:11g的3个dll,加上一个oraons.dll,我们要把这些dl放到site-packages目录下。
11g的需要这3个:
4、连接数据库测试
(1)编写测试用例
(2)运行测试用例
出现如上界面,说明可成功连接数据库。
参考来源出自:http://mp.weixin.qq.com/s/UvX-fDI1Dwj7VVLyaSsuzA
常见问题
1、Dll load failed
如果在使用中出现“Dll load failed”,则需要到Oracle网站下载instantclient的压缩包,然后将其中的oraociei11.dll、oraocci11.dll、oci.dll这3个文件复制到python安装目录下。
2、cx_Oracle版本是和Python的位数去匹配而不是和Windows的位数,换言之,你的Windows是64位的,但是你装了32位的Python,那么你这里也是要用32位的cx_Oracle的。一般来说,Windows位数决定了Python可以安装什么位数,比如说64位的Windows可以装32位的Python也可以装64位的Python,但是32位的Windows就只能装32位的Python了。这里特别容易出错!
3、unable to acquire oracle environment handle
上文强调的版本不一致问题,请检查使其版本一致。