Nexgen Software Solution Company

株式会社トレンドソリューションズ
TEL:050-3524-3317

GitLabでpythonのテストレポートとカバレッジの可視化

詳細
python開発において、GitLab CICDでpytestを実施しテスト結果とカバレッジの確認方法をご紹介したいと思います。今回のサンプルでは、docker containerを立上げ、ほかのプロジェクトに対してpytest実行することにします。
Junitのついては「GitLabでJavaのテストレポートとカバレッジの可視化の記事をご覧ください。

目次

  • .gitlab-ci.ymlのサンプル
  • UT結果の確認
  • カバレッジの確認

.gitlab-ci.ymlのサンプル

以下のように、pytest実行する前にテスト対象プロジェクトをcloneします(pj-clone)。

pytest実行するjobでは、containerを立上げ、pytestを実行しカバレッジレポートを作成します。

.gitlab-ci.yml

stages:
  - pre
  - test

pj-clone:
  stage: pre
  script:

    # 対象リポジトリclone、pytest実行用のディレクトリを作成
    - mkdir projects
    - cd projects
    - mkdir pytest
    - cd pytest
    - git clone https://<user>:<token>@gitlab.com/t8316/nttd/pytest-test.git

pytest:
  stage: test
  variables:
    # GIT_CLEAN_FLAGSについては弊社「.gitlab-ci.ymlの動作原理」の記事をご参考ください
    GIT_CLEAN_FLAGS: -ffdx -e projects/ 
  script:
    # pythonプロジェクトはrequirements.txtを使ってないので、pytestインストールをコマンドで実行
    # coverageとpytestコマンドでテスト実行し、レポート作成
    - docker run --rm -v $CI_PROJECT_DIR/projects:/projects python:3.10.7 /bin/bash -c \ cd projects/pytest && pip3 install --user --upgrade pip && pip install --user pytest pytest-cov && cd projects/pytest/pytest-test && coverage run -m --source=tests/ pytest --cov -v tests/ --junitxml=report.xml && coverage report -m
  # テスト結果を画面に表示するために必要
  coverage: '/(?i)total.*? (100(?:\.0+)?\%|[1-9]?\d(?:\.\d+)?\%)$/'
  artifacts:
    when: always
    reports:
      junit: projects/pytest/pytest-test/report.xml

UT結果の確認

pipelin画面にTestsタブにテスト件数が表示され、クリックして次へ。

テスト実行のジョブ一覧が表示され、クリックするとテストケースの一覧が表示されます。

View detailsをクリックすると、詳細情報がポップアップで表示されます。


カバレッジの確認

カバレッジの確認は、以下の画面で確認できます

  • pipelineのカバレッジ出力job画面
  • MR画面
  • AnalyzeのRepository画面(グラフで履歴を表示)

pipelineのカバレッジ出力job画面

MR画面

AnalyzeのRepository画面(グラフで履歴を表示)

以上です。