概要
GitHub Actionsを使ってテストを実行する際に失敗したテストはログを見るかと思います
テストが少なければいいですがプロジェクトが大きくなるにつれてどんどん探すのが困難になってくるので
PR内で書いたテストコードに失敗したテストの実行内容が表示されたら便利かと思います
今回はとあるライブラリを使って実現する方法について解説していきます
前提
- フレームワークはDjangoを使用
- テストフレームワークはPytestを使用
pytest-github-actions-annotate-failures
pytest-github-actions-annotate-failures
を使うと
pip install pytest-github-actions-annotate-failures
実際に実行してみよう!
試しにテストを書いてみます
今回はヘルスチェックのテストを例に出します
本来は200を返すべきなのにテストコード内で400を返すテストコードを書きます
from rest_framework import status
def test_health_check_returns_200(client):
"""ヘルスチェックで200を返すことをテスト"""
url = "/api/health/"
response = client.get(url, format="json")
assert response.status_code == status.HTTP_400_BAD_REQUEST
assert response.json() == {"msg": "pass"}
GitHub Actionsを実行すると失敗したログが出ます
GitHub Actionsが実行された後に以下のようにPR内に失敗した時の詳細が記載され、長いログを見ずに済みます
変更していないテストコードが失敗したらどうなるの?
例えばAPIのurlを変更したのに伴いテストコードを修正するのを忘れることはあるかと思います
変更していないテストコードが失敗しても下記のようにPR内で表示されるのでとても便利です
例えば先ほどのヘルスチェックのテストコードを修正せずにパスを変えます
テストコード内のパスも一緒に変えていないと当然失敗します
urlpatterns = [
path(r"", include(router.urls)),
path(r"health/", health_check, name="health_check"),
path(r"health_check/", health_check, name="health_check"),
]
GitHub Actionsを実行すると下記のように変更してないテストコードに対しても失敗していたらPR内で詳細に記載されます
便利ですね!
以上です
参考