この記事関して
テスト自動化ツールT-DASHでデータ入力からDBへの登録確認までのやり方を記載しています。
テスト対象
こちらの記事の掲示板アプリを利用させて頂きました。
https://qiita.com/tomson784/items/a5ad6e47643449dffd18
https://github.com/tomson784/bbs
自動化するシナリオ
1.掲示板アプリで投稿内容と名前を入力して送信
(データドリブン機能で入力データを変えて反復テストをする)
2.入力されたデータがDBに登録されているか検証する
(カスタム動作機能でキーワードを独自に作成する)
1.掲示板アプリで投稿内容と名前を入力して送信を行う手順を作成
1.T-DASHで投稿内容と名前を送信するまでのシナリオ作成する
「Setup操作」と「掲示板画面で送信した情報がDB登録されていること」でテストケースを分けているのは
「掲示板画面で送信した情報がDB登録されていること」のテストケースで反復テストをしたいため。
2.投稿と名前の入力値をデータドリブン設定する
外部ファイル(xlsx,csv)からもデータドリブン入力値の設定も可能
2.入力されたデータがDBに登録されているか検証を行う手順を作成
1.DBへSelectクエリするPythonコードを作成する
今回はローカルのDB(sqlite3)へのアクセスにしています。
PythonでのDBへの接続方法に関しては調べてみてください。
import sqlite3
from robot.libraries.BuiltIn import BuiltIn
def validateNameColData(name):
dbFilePath = "C:/build/flasksample/sample-DBApp/bbs/test.db"
try:
conn = sqlite3.connect(dbFilePath)
cur = conn.cursor()
cur.execute('SELECT * from article WHERE name=?',(name,))
# 入力した名前がDBのarticleテーブルのname列にあるかチェック
# 無ければNGとしてFalseを返す
if len(cur.fetchall()) == 0:
return False
return True
except Exception as e:
print(e)
return False
finally:
cur.close()
conn.close()
def validateColArticleData(article):
dbFilePath = "C:/build/flasksample/sample-DBApp/bbs/test.db"
try:
conn = sqlite3.connect(dbFilePath)
cur = conn.cursor()
cur.execute('SELECT * from article WHERE article=?',(article,))
# 入力した投稿がDBのarticleテーブルのarticle列にあるかチェック
# 無ければNGとしてFalseを返す
if len(cur.fetchall()) == 0:
return False
return True
except Exception as e:
print(e)
finally:
cur.close()
conn.close()
2.カスタム動作画面でDB登録を検証するキーワードを作成する
動作名:「ARTICLEテーブルへの登録を検証する(NAME)」
フォーマット:「設定値」の値でARTICLEテーブルのNAME列に登録されていることを検証する
動作名:「ARTICLEテーブルへの登録を検証する(ARTICLE)」
フォーマット:「設定値」の値でARTICLEテーブルのARTICLE列に登録されていることを検証する
${isValidate}= validateNameColData ${value}
https://robotframework.org/robotframework/latest/libraries/BuiltIn.html
Run Keyword If '${isValidate}' == 'False' Fail TESTFAIL
3.テスト実行して結果を確認する
最後に
DBを初期化する処理も最後にあった方がいいかも。
より良いやり方があればまた追記します。
RobotframeworkのDatabaseLibraryを使用した方が楽かもです。
https://franz-see.github.io/Robotframework-Database-Library/api/0.5/DatabaseLibrary.html