Skip to content

markus-leben/Robotframework-Database-Library

 
 

Repository files navigation

Robot Framework Database Library

The Database Library for Robot Framework allows you to query a database and verify the results. It requires an appropriate Python module to be installed separately - depending on your database, like e.g. oracledb or pymysql.

The library consists of some keywords designed to perform different checks on your database. Here you can find the keyword docs.

Requirements

  • Python
  • Robot Framework
  • Python database module you're going to use - e.g. oracledb

Installation

pip install robotframework-databaselibrary 

Usage examples

Basic usage

*** Settings *** Library DatabaseLibrary Test Setup Connect To My Oracle DB *** Keywords *** Connect To My Oracle DB Connect To Database ... oracledb ... dbName=db ... dbUsername=my_user ... dbPassword=my_pass ... dbHost=127.0.0.1 ... dbPort=1521 *** Test Cases *** Person Table Contains Expected Records ${output}= Query select LAST_NAME from person Length Should Be ${output} 2 Should Be Equal ${output}[0][0] See Should Be Equal ${output}[1][0] Schneider Person Table Contains No Joe ${sql}= Catenate SELECT id FROM person ... WHERE FIRST_NAME= 'Joe' Check If Not Exists In Database ${sql}

Handling multiple database connections

*** 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 db_user pass 127.0.0.1 5432 ... alias=postgres Connect To Database pymysql db db_user pass 127.0.0.1 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

See more examples in the folder tests.

Database modules compatibility

The library is basically compatible with any Python Database API Specification 2.0 module.

However, the actual implementation in existing Python modules is sometimes quite different, which requires custom handling in the library. Therefore there are some modules, which are "natively" supported in the library - and others, which may work and may not.

Python modules currently "natively" supported

Oracle

  • oracledb
    • Both thick and thin client modes are supported - you can select one using the driverMode parameter.
    • However, due to current limitations of the oracledb module, it's not possible to switch between thick and thin modes during a test execution session - even in different suites.
  • cx_Oracle

MySQL

PostgreSQL

MS SQL Server

SQLite

Teradata

IBM DB2

ODBC

Kingbase

  • ksycopg2

Further references (partly outdated)

About

Branch for connect_to_database changes

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • RobotFramework 64.0%
  • Python 35.0%
  • Other 1.0%