Robot Framework 数据库库
项目描述
Robot Framework 数据库库
Robot Framework 的数据库库允许您查询数据库并验证结果。它需要安装适当的 Python 模块 - 根据您的数据库,例如 oracledb
或 pymysql
。
该库包含一些关键字,用于对您的数据库执行不同的检查。您可以在关键字文档中找到这些。
观看关于数据库库更新的Robocon 2024演讲。
要求
- Python
- Robot Framework
- 你将要使用的Python数据库模块 - 例如
oracledb
安装
pip install robotframework-databaselibrary
基本用法示例
*** Settings ***
Library DatabaseLibrary
Test Setup Connect To My Oracle DB
*** Keywords ***
Connect To My Oracle DB
Connect To Database
... oracledb
... db_name=db
... db_user=my_user
... db_password=my_pass
... db_host=127.0.0.1
... db_port=1521
*** Test Cases ***
Get All Names
${Rows}= Query select FIRST_NAME, LAST_NAME from person
Should Be Equal ${Rows}[0][0] Franz Allan
Should Be Equal ${Rows}[0][1] See
Should Be Equal ${Rows}[1][0] Jerry
Should Be Equal ${Rows}[1][1] Schneider
Person Table Contains Expected Records
${sql}= Catenate select LAST_NAME from person
Check Query Result ${sql} contains See
Check Query Result ${sql} equals Schneider row=1
Wait Until Table Gets New Record
${sql}= Catenate select LAST_NAME from person
Check Row Count ${sql} > 2 retry_timeout=5s
Person Table Contains No Joe
${sql}= Catenate SELECT id FROM person
... WHERE FIRST_NAME= 'Joe'
Check Row Count ${sql} == 0
在 tests
文件夹中查看更多示例。
处理多个数据库连接
该库可以使用 别名 来处理对多个数据库的多个连接。别名在创建连接时设置,并可以传递给库关键词的相应参数。
示例
*** Settings ***
Library DatabaseLibrary
Test Setup Connect To All Databases
Test Teardown Disconnect From All Databases
*** Keywords ***
Connect To All Databases
Connect To Database
... psycopg2
... db_name=db
... db_user=db_user
... db_password=pass
... db_host=127.0.0.1
... db_port=5432
... alias=postgres
Connect To Database
... pymysql
... db_name=db
... db_user=db_user
... db_password=pass
... db_host=127.0.0.1
... db_port=3306
... alias=mysql
*** Test Cases ***
Using Aliases
${names}= Query select LAST_NAME from person alias=postgres
Execute Sql String drop table XYZ alias=mysql
Switching Default Alias
Switch Database postgres
${names}= Query select LAST_NAME from person
Switch Database mysql
Execute Sql String drop table XYZ
使用配置文件
Connect To Database
关键字允许以两种方式提供连接参数:
- 作为关键词参数
- 在配置文件中 - 简单的 key=value 对列表,设置在 别名 部分。
你可以只用一种方式,也可以将它们结合起来使用
- 默认情况下,使用关键词参数
- 如果没有提供关键词参数,则在配置文件中搜索参数值
除了常用的连接参数外,还可以包含任何其他DB模块特定参数作为键/值对。如果相同自定义参数同时作为关键词参数和在配置文件中提供,则 关键词参数值 优先。
默认情况下,配置文件的路径设置为 ./resources/db.cfg
。你可以使用 Connect To Database
关键字中的相应参数来更改它。
必须 在配置文件中包含至少一个部分名称 - 如果使用了连接别名(见 处理多个数据库连接),则是连接别名,如果没有使用别名,则是 [default]
。
配置文件示例
具有默认别名的配置文件(等同于不使用别名)
[default]
db_module=psycopg2
db_name=yourdbname
db_user=yourusername
db_password=yourpassword
db_host=yourhost
db_port=yourport
具有特定别名的配置文件
[myoracle]
db_module=oracledb
db_name=yourdbname
db_user=yourusername
db_password=yourpassword
db_host=yourhost
db_port=yourport
仅包含一些参数的配置文件
[default]
db_password=mysecret
包含一些自定义DB模块特定参数的配置文件
[default]
my_custom_param=value
内联断言
接受 assertion_operator
和 expected_value
参数的关键词执行根据指定条件进行的检查 - 使用 断言引擎。
示例
Check Row Count SELECT id FROM person == 2
Check Query Result SELECT first_name FROM person contains Allan
重试机制
接受 retry_timeout
和 retry_pause
参数的断言关键词支持等待断言通过。
设置 retry_timeout
参数启用机制 - 在这种情况下,SQL请求和断言在一个循环中执行,直到断言通过或达到 retry_timeout
。循环迭代之间的暂停使用 retry_pause
参数设置。
参数值使用 Robot Framework 时间格式 设置 - 例如 5 seconds
。
默认情况下,重试机制是禁用的 - retry_timeout
设置为 0
。
示例
${sql}= Catenate SELECT first_name FROM person
Check Row Count ${sql} == 2 retry_timeout=10 seconds
Check Query Result ${sql} contains Allan retry_timeout=5s retry_pause=1s
记录查询结果
检索SQL查询结果的关键词在RF日志中以表格形式打印结果行。
- 应用 50行 的日志头限制,其他表格行在日志消息中被截断。
- 你可以在测试中使用关键词
Set Logging Query Results
任何时间调整限制和日志记录。
你还可以在导入库期间设置限制或禁用日志记录。
示例
*** Settings ***
# Default behavior - logging of query results is enabled, log head is 50 rows.
Library DatabaseLibrary
# Logging of query results is disabled, log head is 50 rows (default).
Library DatabaseLibrary log_query_results=False
# Logging of query results is enabled (default), log head is 10 rows.
Library DatabaseLibrary log_query_results_head=10
# Logging of query results is enabled (default), log head limit is disabled (log all rows).
Library DatabaseLibrary log_query_results_head=0
提交行为
在创建数据库连接时,库不明确设置 autocommit 行为 - 因此使用Python DB模块的默认值。根据Python DB API规范,它应该默认禁用 - 这意味着如果需要,每个SQL事务都必须包含一个专门的提交语句。
库为您管理它
- 像
执行 SQL 字符串
这样的关键字在运行查询后会自动进行提交 - 或者错误发生时回滚 - 像
查询
这样的关键字不会进行提交,但在错误发生时也会回滚
您可以使用 no_transaction
参数关闭这种自动提交/回滚行为。请参阅特定关键字的文档。
您还可以在 Python DB 模块级别显式设置 autocommit 行为 - 使用 设置自动提交
关键字。这不会影响库关键字中自动提交/回滚行为(如上所述)。
数据库模块兼容性
该库基本上与任何 Python 数据库 API 规范 2.0 模块兼容。
然而,现有 Python 模块的实际实现有时相当不同,这需要在库中自定义处理。因此,有些模块在库中“原生”支持,而有些可能工作也可能不工作。
Python 模块目前“原生动态”支持
Oracle
- oracledb
- 支持胖客户端和瘦客户端模式 - 您可以使用
oracle_driver_mode
参数选择其中之一。 - 然而,由于当前 oracledb 模块的限制,在测试执行会话期间无法在胖客户端和瘦客户端模式之间切换 - 即使在不同的套件中。
- 支持胖客户端和瘦客户端模式 - 您可以使用
- cx_Oracle
MySQL
PostgreSQL
MS SQL Server
SQLite
Teradata
IBM DB2
ODBC
Kingbase
- ksycopg2
进一步参考(部分过时)
项目详情
robotframework_databaselibrary-2.0.2.tar.gz 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | f01077434344af3a460499f9da52a23544ee02e000d5fe2fa9efa8c0fd74eee7 |
|
MD5 | d0aed636d936eb4f2a86c576bdfa9cf4 |
|
BLAKE2b-256 | ce6859d8e5ed436cf902926ea76716a2864b4764e2dc93278feb7df39e122be6 |
哈希值用于robotframework_databaselibrary-2.0.2-py3-none-any.whl
算法 | 散列摘要 | |
---|---|---|
SHA256 | a77ae5dd3d29664a64cca2d88468b2e9d775193ee86beea52ffc41a4dbee23c0 |
|
MD5 | 8bcb9168ede5a0e4dd7f1d3254db7f0e |
|
BLAKE2b-256 | 6dd98bb7b02fc20926a140fd18c4e726133894d06f8b1d2b1cf59a91e6801961 |