Outline
テスト自動化で、検証に使いたいテストデータの情報をデータベースから取得するケースを考える。
例えば、ログイン情報等をDBに入れて、そこから参照する。もしくは、ログイン情報を更新した時に、UIだけではなく、DBに正しく値が反映されたかを更新したい場合、などである。
今回、テスト自動化ツール T-DASHでデータベースに接続し、値を取得する方法に関して記述する
※ T-DASH version 4.2.001 を用いて構築したものである。
技術的な情報
T-DASHのカスタム動作を作成し、データベースに接続をする
そのカスタム動作を定義するにあたり、robot frameworkのlibrary Database-Libraryを用いた。
また、接続可能なデータベースは以下のページを参照のこと。
データベースに合わせてライブラリをインストールする必要がある
例
DataBase | Library |
---|---|
MySQL | pymysql |
PostgreSQL | psycopg2 |
Oracle | cx_Oracle |
本記事ではMySQLを使ったものになっている。
前提条件
今回のデータベースは以下の構成となっている
DB setting
項目 | 値 |
---|---|
DB Name | tdash |
DB User | tdash |
DB Password | tdash |
DB Host | tdash |
DB Port | 3306 |
Schema : quintee_user_tbl
項目 | 定義 | 意味 |
---|---|---|
id | INT NOT NULL | ユーザーの連番 |
name | VARCHAR(64) | ユーザー名 |
VARCHAR(128) Primary Key | Email Address | |
password | VARCHAR(128) | Password |
T-DASHの手順
カスタム動作
以下設定内容を DB.yamlのファイル名で保存する
ACT-CAT-CUSTOM-350ce588-6e5f-466b-a8b6-d65302624b45:
action_category_name: DB
icon: ''
color: '#b6d83b'
custom_data:
file_name: DB
pip_list:
- robotframework-databaselibrary
- PyMySQL
- cryptography
library_list:
- DatabaseLibrary
actions:
ACT-CUSTOM-6d171599-6ba8-420a-b19f-e51f2be75ef7:
action_name: MySQLからユーザーのパスワードを取得する
action_type: operation
action_format: ユーザーのemail「設定値1」のパスワードを変数share_passwordに入れる
action_note: ''
action_args:
- value1
action_def:
- - '${DBName} = '
- Set Variable
- tdash
- - '${DBUser} = '
- Set Variable
- tdash
- - '${DBPass} = '
- Set Variable
- tdash
- - '${DBHost} = '
- Set Variable
- localhost
- - '${DBPort} = '
- Set Variable
- '3306'
- - Connect To Database
- pymysql
- ${DBName}
- ${DBUser}
- ${DBPass}
- ${DBHost}
- ${DBPort}
- - ${output} =
- Query
- SELECT * FROM quintee_user_tbl WHERE email = '${value1}';
- \
- 'True'
- - Log
- ${output}
- - '${password} = '
- Set Variable
- ${output[0]}[password]
- - Set Suite Variable
- ${share_password}
- ${password}
- - Disconnect From Database
次に、作成されたDB.yamlをT-DASHの動作定義 -> カスタム動作 -> カスタム動作をインポート にてインポートする
実際にインポートされた設定内容を開く
ライブラリを追加をクリックし、ライブラリの情報を確認する。
今回、MySQLを使うため、"pip install PyMySQL" となっています。
もし、他のデータベース、例えばPostgreSQL (library = psycopg2)を使いたい場合
以下のように、必要なライブラリを pip installする必要がある。
robot frameworkのシナリオの意味
利用者によってカスタマイズする場所は、9~13行目にあたる。
SQLのQueryを利用者に合わせて変更し、取得した値を変数に渡し、T-DASHのテストケースで利用する。
今回の例では、quintee_user_tblのテーブルから、emailがカスタム関数の引数にあたる${value1}と一致するデータを取得する
SELECT * FROM quintee_user_tbl WHERE email = '${value1}'
スクリプト
シナリオは以下の通り
- ログインページを開く
- メールアドレスを入力する
- カスタム動作「DBからパスワードを取得する」で、引数にユーザーのemail addressを渡す。結果は変数${share_password}に格納される
- パスワードに${share_password}を入力する
- ログインをクリックする