0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[T-DASH] テストが失敗したら、teamsやslackに通知させる

Last updated at Posted at 2025-01-30

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で保存する

@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つのカスタム関数が作成される。

image.png

python ライブラリ
以下スクリプトを lib_notice.pyのファイル名として保存する

@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や送るメッセージは適時修正すること。

image.png

先ほどインポートしたカスタム関数を開き、ライブラリを追加するをクリックする

開くと、pipインストールとLibraryが以下のようになっています。
もし、なっていない場合、installを行ってください。

image.png

上記で作成したpython scriptを下図の自作ライブラリのフォルダに格納する

image.png

テストケース

通知を行うだけのテストケースを作成します
今回は、teams通知のカスタム関数を使った例を示す。

image.png

テストスイート

テストスイート内で、実行させる各テストケースの次に、先ほどの通知のテストケースを呼び出します。

image.png

テスト実行

今回の例では、失敗させるテストケースで失敗します。

image.png

失敗させたため、teamsに以下のように通知されます。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?