连接Oracle数据库,掌握RF框架操作技巧,分享数据库交互实战经验

文章导读
首先,安装cx_Oracle库:pip install cx_Oracle。然后连接代码:import cx_Oracleconnection = cx_Oracle.connect('username/password@host:port/service_name')cursor = connection.cursor()cursor.execute('SELECT * FROM table')
📋 目录
  1. A RF框架数据库操作实战
  2. B Oracle连接字符串详解
  3. C RF中处理Oracle事务技巧
  4. D 优化Oracle查询在RF中的性能
  5. E 常见错误及实战解决
  6. F RF+Oracle自动化测试案例
A A

首先,安装cx_Oracle库:pip install cx_Oracle。然后连接代码:
import cx_Oracle
connection = cx_Oracle.connect('username/password@host:port/service_name')
cursor = connection.cursor()
cursor.execute('SELECT * FROM table')
for row in cursor:
print(row)
cursor.close()
connection.close()
在RF框架中,使用Library关键字封装:
*** Settings ***
Library DatabaseLibrary.py
Suite Setup Connect To Database Oracle user/pass@host:1521/orcl
这是在Robot Framework中连接Oracle并执行查询的基本实战技巧。

RF框架数据库操作实战

在RF中,使用DatabaseLibrary:
pip install robotframework-databaselibrary
然后在test case中:
Connect To Database Using Custom Params cx_Oracle user/pass@host:1521/service
${result}= Query SELECT * FROM users WHERE id=1
Log ${result}
Disconnect From Database
实战经验:总是用Suite Setup连接,Suite Teardown断开,避免重复连接。

Oracle连接字符串详解

Oracle连接常用格式:username/password@//host:port/service_name
例如:scott/tiger@//localhost:1521/XE
在RF中,DatabaseLibrary支持直接传入这个字符串。经验分享:生产环境用TNSNAMES.ORA配置,代码中只写username/password@tnsname,减少硬编码,提高维护性。

RF中处理Oracle事务技巧

在RF脚本中:
Begin Transaction
${rows}= Execute Sql String INSERT INTO test VALUES(1,'data')
Commit Transaction
实战中,如果出错用Rollback Transaction。分享:用TRY...EXCEPT包装,但RF的Error Handling更简单,用Run Keyword And Continue On Failure。

优化Oracle查询在RF中的性能

使用参数化查询避免SQL注入:
${params}= Create List value1 value2
Query SELECT * FROM table WHERE col=? ${params}
经验:大表查询用LIMIT或ROWNUM分页。连接池用cx_Oracle的makepool函数,在RF自定义library中实现,重用连接提升速度。

连接Oracle数据库,掌握RF框架操作技巧,分享数据库交互实战经验

常见错误及实战解决

DPI-1047错误:缺少Oracle Instant Client,下载对应版本解压到PATH。ORA-12514:服务名错,查tnsping。RF中连接超时设:Connect To Database timeout=30。分享:日志用Log Many记录结果,便于调试数据库交互。

RF+Oracle自动化测试案例

完整Suite示例:
*** Test Cases ***
Test Query
${data}= Query SELECT count(*) FROM orders
Should Be Equal As Numbers ${data[0][0]} 1000
实战经验:结合关键字驱动,数据库校验API响应数据一致性,是UI自动化后端验证神器。

FAQ
Q: RF连接Oracle失败ORA-01017?
A: 检查用户名密码,注意大小写,用双引号包围如"user"/pass。
Q: 如何在RF中执行存储过程?
A: 用Execute Sql String BEGIN proc_name(param); END;。
Q: 批量插入数据怎么做?
A: 用Loop循环Execute Sql String,或准备语句。
Q: 断开连接忘记了会怎样?
A: 连接泄漏,生产环境OOM,用Suite Teardown Disconnect From Database。