Robot Framework - 连接Oracel数据库
来源:互联网 发布:mac 卸载搜狗输入法 编辑:程序博客网 时间:2024/06/05 01:50
Robot Framework - 连接Oracel数据库
需要说明的是Connect To Database Using Costom Params的参数:由于我使用了cx_Oracle这个库,所以第一个参数指定它;第二个参数是连接串用户名,密码,和要连接的Oracle数据库的本地服务命名(与你oracle目录\network\admin\tnsnames.ora文件中的描述相对应)。cx_Oracle依赖Oracle的客户端环境,这点需要注意。综上所述,所以必须先安装Oracle的客户端。以Oracle 11.2为实例,操作步骤如下:
一、使用instantclient_11_2和PL/SQL Developer工具包连接oracle 11g远程数据库
1、先到Oracle网站下载Instant Client :
http://www.oracle.com/technology/global/cn/software/tech/oci/instantclient/index.html
注意:根据你的操作系统选择不同的Instant Client版本,需要保持spotlight-on-oracle、Oracle Instant client、PL.SQL都是32位或者64位,如不按照该要求,将会出错。
下载回是一个压缩文件,解压之后的文件夹叫:D:/instantclient_11_2.放在你喜欢的目录即可.例如:D:/instantclient_11_2
2、在D:/instantclient_11_2目录下新建目录network,在network目录下再新建admin目录,在admin目录下新建文件tnsnames.ora,使用文本编辑器打开写入如下内容:
MWDB=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.58)(PORT =1521))
)
(CONNECT_DATA =
(SERVICE_NAME = MWDB)
)
)
第一个黄色字块:表示定义远程服务器的在本地主机名
第二个黄色字块:远程数据库实例名
3、添加一个环境变量,名为TNS_ADMIN,值为tnsnames.ora文件所在路径。比如我的本机为:D:/instantclient_11_2/network/admin
4、设置ORACLE的语言,添加环境变量NLS_LANG ,值为SIMPLIFIED CHINESE_CHINA.ZHS16GBK
如果不清楚远程数据库的ORACLE语言,可以ssh或者telnet到远程机器,在命令界面输入,用命令行连接到数据库。
select * fromnls_instance_parameters;
查看NLS_LANGUAGE 的值
NLS_LANGUAGE
NLS_TERRITORY
二、下载并安装PL.SQL.Developer配置应用
配置tools->preferences->connection
Oracle Home
D:/instantclient_11_2
OCI library
D:/instantclient_11_2/oci.dll
中文的PL/SQLDeveloper就是
工具-->首选项-->连接
Oracle主目录
D:/instantclient_11_2
OCI库
D:/instantclient_11_2/oci.dll
6、关闭PL/SQL Developer,重起Developer.
主机名就会出现在PL/SQLDeveloper的列表里,输入用户名密码,就可以登录远程oracle 11g数据库了。
补充Instant Client说明
Oracle Instantclient 是oracle提供的简便客户端, 支持多种平台. 可从oracle网站下载, 下载地址为
http://www.oracle.com/technology/global/cn/software/tech/oci/instantclient/index.html
包括如下内容:
Instant clientPackage - Basic 运行OCI, OCCI, 和JDBC-OCI应用程序需要的所有文件.
Instant clientPackage - Basic Lite: 只包含英语错误信息, 只支持unicode, ascii, 西欧字符集.
Instant clientPackage - JDBC Supplement 为jdbc增加了xa, 国际化和RowSet操作.
Instant ClientPackage - SQL *Plus 包含sqlplus和需要的库文件
Instant clientPackage - SDK 使用Instant Client开发Oracle 应用程序需要的头文件及示例makefile
Instant clientpackage - ODBC 使用odbc时需要的库, 不是所有平台都有. linux平台包含.
Basic和BasicLite两个中必须选一个, 其他包都是可选的. 我下载了 Basic, JDBC supplement, SQL *Plus, SDK, ODBC. 解压后放在一个文件夹下, 在这个文件夹下建立文件tnsnames.ora, 设置环境变量LD_LIBRARY_PATH和TNS_ADMIN指向解压后的目录, 就可以使用sqlplus了.
我下载的instantclient版本为10.2.0.2.0, 测试了联接到oracle9.2.0.4和oracle 10.2.0.1.
Instant Client中不包含tnsping, exp/imp, rman, netca等工具. 如果需要这些工具则需要安装oracle client
7、参考文档:
http://blog.csdn.net/leather0906/article/details/6456095
二、安装Database Library
1、打开Robot Framework官网,找到Database Library,官网提供了Java 和Python两个版本的DatabaseLibrary,这里我使用的是Python版,地址为
http://franz-see.github.io/Robotframework-Database-Library/
解压使用命令:python setup.py install执行安装。
2、安装cx_Oracle
通过:https://wiki.python.org/moin/Oracle进入下载cx_Oracle
选择第二个 cx_oracle 的主页,进入下载列表
选择合适的版本下载并安装。我选择的是Windowsx86 Installer (Oracle 10g, Python 2.6)
安装好了以后你的python\Lib\site-packages下多了一个cx_Oracle.pyd文件,这个目录下同时也多了个文件夹
cx_Oracle-5.1-py2.6.egg-info,cx_oralce的使用文档就在里边。
这 里的逻辑是这个样子的,Database Library实际上是一个处在Robot Framework和Database Interfaces 中间的代理模块,Robot Framework 通过Database Library 所提供的接口,间接的调用Database Interfaces,从而实现操作数据库的目的。
打开Database Interfaces页面,找到Oracle的API驱动及下载地址,找到你对目前python环境对应版本的安装文件,下载安装
3、安装完成检查:
安装完成后,在你的 Python27Libsite-packages目录下,可以看到Database Library文件夹和cx_Oracle.pyd文件
FAQ:
如果执行以上操作后,运行报ImportError: DLL load failed: The specified module could not befound.
还可以执行如下操作:
将如果三个文件,导入到Python27Libsite-packages目录下
三、编写测试脚本
1、检查Database Library的关键字已经在RF中:
运行RIDE,按F5查看Database Library的关键字。
我们编写一个数据库查询的测试用例,脚本如下:
[url=][/url]
Connect To Database Using Custom Params cx_Oracle 'bpm','bpm','orcl'@{data} query select * from sys_userlogmany @{data}log ${data[0][1]}${count} Get length ${data}log ${count}Disconnect FromDatabase[url=][/url]
运行脚本,结果如下
运行后查看Log,表中的中文全部变成了乱码。cx_Oracle的默认编码不是Utf-8,需要人工转换一下。DataBaseLibrary自身没有提供转换函数,为了解决这个问题,我们需要对DataBaseLibrary进行扩展。
2、解决Database Library中文乱码问题
打开安装目录下的 query.py文件,添加一个decode函数,用于对字符串进行解码
def decode(self,customstr,mode): return customstr.decode(mode)
更改测试脚本,增加转码过程
再次运行,得到系统输出,测试通过
3、参考链接:
http://www.bdqn.cn/news/201508/17426.shtml
http://www.ltesting.net/ceshi/ceshijishu/zdcs/robotframework/2012/0327/204514.html
四、oracle数据库的写法
1、oracle数据库写法1
把连接串写到tnsnames.ora里面。
2、oracle写法2,把连接串写在第三个位置:
即tnsnames里面的=后面的部分
- Robot Framework - 连接Oracel数据库
- Robot Framework 教程 (5) - 连接Oracel数据库
- Robot Framework 教程 - 连接Oracel数据库
- robot framework 连接数据库
- Robot Framework - 连接mysql数据库
- Oracel连接数据库
- PHP连接oracel数据库
- Robot Framework中使用DatabaseLibrary来连接数据库(SQLServer+MySQL)
- Robot Framework中使用DatabaseLibrary来连接数据库(MySQL)
- Robot Framework连接Oracle数据库(汇总自网络)
- Robot Framework-DatabaseLibrary数据库(MySql)
- Robot Framework-DatabaseLibrary数据库(MySql)
- Robot连接sqlserver数据库
- 解决Robot Framework 使用cx_Oracle连接Oracle数据库中文不识别的问题
- robot连接,使用SQLSERVER2000数据库
- oracel数据库
- Robot Framework
- Robot Framework
- JS日期选择器(兼容IE,Firefox,Opera等主流浏览器)
- linux 安装Qt
- 云计算笔记(第一天)
- C语言中循环结构
- jquery里面怎么跳出each循环
- Robot Framework - 连接Oracel数据库
- Write operations are not allowed in read-only mode错误解决
- c语言程序设计第4章选择结构知识点
- LeetCode396 Rotate Function
- ES6中的Map和Set
- android developer tiny share-20161020
- 打印乘法口诀表
- python数据结构学习笔记-2016-11-02-01-栈的应用
- js 数字前面自动补零