メインコンテンツへスキップ

GitHub Actions・pytestで失敗した(Failed)時の挙動確認

·☕3分
#テック系 #Python #pytest #GitHub #GitHub Actions #テスト #CI/CD
Rakuichi
著者
Rakuichi
ヴィッセルサポのIT屋
目次

タイトルの通り、GitHub Actionsでpytestを実行し、テストが失敗(Failed)したときの挙動について確認してみました。

前回の記事「GitHub Actions・pipenv・pytestで自動テストの練習」で、一連の流れの確認をしてみたのですが、テストが失敗のときはどうやって判断できるのだろうか?と思い、実際に試し、そのまとめになります(当たり前のことなのかもしれませんが、勉強なのであしからず)。

失敗するテストを作成
#

基本的な構成は「GitHub Actions・pipenv・pytestで自動テストの練習」と全く同じにしています。失敗するテストの挙動を確認するために「pytest-failed」ブランチを作成して、そちらでテストの内容だけ、必ず失敗するように書き換えて試してみました。全体感などを確認したい方は上記記事を見てみてください。

今回利用した実際のリポジトリ:https://github.com/rakuichi4817/study-actions/tree/pytest-failed

作成した必ず失敗するテストファイルは以下になります。assert 2 == 3となっているため、必ずテストは失敗になります。この状態で変更をコミット・プッシュすることで、GitHub Actions上で失敗するテストが実行可能になります。

def test_failed():
    print("---failed test---")
    assert 2 == 3 

GitHub Actionsの確認
#

プッシュするとエラーに関するメールが届きます。GitHub Actionsでは、処理に問題があるとメールが届く機能があります。下図のように問題があったworkflowへのリンクが貼られています。

メール内容
Pytestでエラーが出ていることを確認できる

GitHub Actions上で結果を確認してみます(あえてメールのリンクを踏んでいません)。

GitHubのリポジトリ上のActionsタブを見てみると、エラーを吐いていることが確認できます。ここでもworkflowがエラーとなっていることが判断できます。

リポジトリのActionsタブ
失敗しているテストでエラーが確認できる

ここで、今回のプッシュに該当する一番上のworkflowの詳細の確認をします。

StatusがFailureとなっていることがわかります。さらに「Annotations」が追加され、エラーに関する内容が書かれています。ただ、ここでは、「処理の中でエラーが発生したよ」くらいしかわかりません。軽く調べてみたところ、ここにエラー箇所を表示する方法もあるみたいです。

リポジトリのActionsタブ
StatusがFailure

今回はそのまま「build」ジョブの中身を見て、エラーが出ているステップを確認します。

「Test with pytest」ステップでエラーが出ていることがわかり、そのまま詳細情報が表示されます(開いたときに自動で詳細も表示されました)。前節で作成した、失敗するテスト内容assert 2 == 3のところでFAILEDが出ていることがわかります。

エラーjobの詳細
Pytestでエラーが出ていることを確認できる

まとめ
#

今回は、GitHub Actionsでpytestが失敗したときにどういった挙動になるのかを確認しました。

pytestに失敗するとworkflowも失敗となり、お知らせメールが届くことを学べました。しかし、具体的なエラー内容はジョブの詳細を開くしかなく、Annotationsでは判断できません。このあたりは、カスタマイズすることでエラー箇所をAnnotationしたりもできるのかなと思っています。

次回以降、このあたりの勉強もできれば…。

スポンサードリンク

Related

GitHub Actions・pipenv・pytestで自動テストの練習
·☕5分
#テック系 #Python #pytest #GitHub #GitHub Actions #テスト #CI/CD
motoとpytestでlambdaにおけるS3接続のモックを使ったテスト
·☕5分
#テック系 #Python #pytest #AWS #Boto3 #Moto
FastAPI×MKDocs(×GitHub Pages)でドキュメント生成
··☕5分
#テック系 #Python #FastAPI #MKDocs #GitHub
miseとpoetryでPython環境構築 + miseのtask利用
·☕5分
#テック系 #mise #Python #Poetry #Streamlit #環境構築