LoginSignup
0
0

[T-DASH] テスト自動化でデータベースから情報を取得して検証する

Posted at

Outline

テスト自動化で、検証に使いたいテストデータの情報をデータベースから取得するケースを考える。
例えば、ログイン情報等をDBに入れて、そこから参照する。もしくは、ログイン情報を更新した時に、UIだけではなく、DBに正しく値が反映されたかを更新したい場合、などである。

image.png

今回、テスト自動化ツール 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) ユーザー名
email 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の動作定義 -> カスタム動作 -> カスタム動作をインポート にてインポートする

image.png

実際にインポートされた設定内容を開く

image.png

ライブラリを追加をクリックし、ライブラリの情報を確認する。
今回、MySQLを使うため、"pip install PyMySQL" となっています。

image.png

もし、他のデータベース、例えばPostgreSQL (library = psycopg2)を使いたい場合
以下のように、必要なライブラリを pip installする必要がある。

image.png

robot frameworkのシナリオの意味
利用者によってカスタマイズする場所は、9~13行目にあたる。
SQLのQueryを利用者に合わせて変更し、取得した値を変数に渡し、T-DASHのテストケースで利用する。
今回の例では、quintee_user_tblのテーブルから、emailがカスタム関数の引数にあたる${value1}と一致するデータを取得する

SELECT * FROM quintee_user_tbl WHERE email = '${value1}'

image.png

スクリプト

シナリオは以下の通り

  1. ログインページを開く
  2. メールアドレスを入力する
  3. カスタム動作「DBからパスワードを取得する」で、引数にユーザーのemail addressを渡す。結果は変数${share_password}に格納される
  4. パスワードに${share_password}を入力する
  5. ログインをクリックする

image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0