Outline
テスト自動化で、テストが失敗したらteamsやslackに通知させたいときがある。
CIとT-DASHを連携していれば、CIツール上で、teamsやslackに通知させるようにpost設定すればよい。
参考
ただし、CIを使いたくない場合もある。
本記事は、T-DASH単体で、なんとか通知させる仕組みを実現する
技術的な情報
Automatic variables
robot frameworkでは、実行中のテストに関する情報の、自動変数がある。
これを用いて、テストの状態を知ることができる
変数 | 内容 |
---|---|
${PREV TEST NAME} | 直前に実行したテストケースの名前 |
${PREV TEST STATUS} | 直前に実行したテストケースの状態、 PASSまたはFAIL |
webhook
teamsやslackに通知するとき、pythonには通知用ライブラリがある
pymsteamsやslackwebである
これを用いれば、簡単に通知を送ることができる。
T-DASHのテストスイート内の挙動
テストスイート内では、複数のテストケースがある場合、一つのテストケースが失敗しても、後続のテストケースが実行される。
つまり、テストケースが実行(成功・失敗関係なく)、次のテストケースが実施されたときに、先ほどの自動変数${PREV TEST STATUS}の情報をもとに制御すれば、失敗のテストケースが発生したときに通知を行うことができる。
参考
T-DASH
カスタム動作
robotframework library
以下設定ファイルを Log.yamlで保存する
ACT-CAT-CUSTOM-fe5cf4c9-7f6b-41ca-a1c9-694c399fd681:
action_category_name: Log
icon: ''
color: '#e811cd'
custom_data:
file_name: Log
pip_list:
- pymsteams
- slackweb
library_list:
- RequestsLibrary
- lib_notice.py
actions:
ACT-CUSTOM-d8d67d32-0e47-47e0-82f7-a0b6c4fa1d73:
action_name: 前のテストケースが失敗したらteamsに通知
action_type: operation
action_format: 前のテストケースが失敗したらteamsに通知
action_note: ''
action_args: []
action_def:
- - Log
- 'Pre : ${PREV TEST NAME} : ${PREV TEST STATUS}'
- - Run Keyword If
- '''${PREV TEST STATUS}'' == ''FAIL'''
- send_message2teams
- ${PREV TEST NAME}
- ${PREV TEST STATUS}
ACT-CUSTOM-2e48d614-fb4b-4366-942d-d938ef5a2254:
action_name: 前のテストケースが失敗したらslackに通知
action_type: operation
action_format: 前のテストケースが失敗したらslackに通知
action_note: ''
action_args: []
action_def:
- - Log
- 'Pre : ${PREV TEST NAME} : ${PREV TEST STATUS}'
- - Run Keyword If
- '''${PREV TEST STATUS}'' == ''FAIL'''
- send_message2slack
- ${PREV TEST NAME}
- ${PREV TEST STATUS}
次に、Custom.yamlをT-DASHの動作定義 -> カスタム動作 -> カスタム動作をインポート にてインポートし、実際にインポートされた設定内容を開く
以下のように、2つのカスタム関数が作成される。
python ライブラリ
以下スクリプトを lib_notice.pyのファイル名として保存する
# pip install pymsteams
import pymsteams
import slackweb
team_webhook_url = "https://webhook.office.com/xxxxx"
slack_webhook_url = "https://hooks.slack.com/xxxxx"
def send_message2teams (testcase,status):
teams = pymsteams.connectorcard(team_webhook_url)
teams.title("T-DASH alert")
teams.text("TestCase : " + testcase + " , " + "Status : " + status)
teams.send()
def send_message2slack (testcase,status):
slack = slackweb.Slack(url=slack_webhook_url)
slack.notify(text="TestCase : " + testcase + " , " + "Status : " + status)
尚、webhookのurlや送るメッセージは適時修正すること。
先ほどインポートしたカスタム関数を開き、ライブラリを追加するをクリックする
開くと、pipインストールとLibraryが以下のようになっています。
もし、なっていない場合、installを行ってください。
上記で作成したpython scriptを下図の自作ライブラリのフォルダに格納する
テストケース
通知を行うだけのテストケースを作成します
今回は、teams通知のカスタム関数を使った例を示す。
テストスイート
テストスイート内で、実行させる各テストケースの次に、先ほどの通知のテストケースを呼び出します。
テスト実行
今回の例では、失敗させるテストケースで失敗します。
失敗させたため、teamsに以下のように通知されます。