6月 22, 2025
                                        
                                python開発において、GitLab CICDでpytestを実施しテスト結果とカバレッジの確認方法をご紹介したいと思います。今回のサンプルでは、docker containerを立上げ、ほかのプロジェクトに対してpytest実行することにします。 Junitのついては「GitLabでJavaのテストレポートとカバレッジの可視化」の記事をご覧ください。
以下のように、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
pipelin画面にTestsタブにテスト件数が表示され、クリックして次へ。

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

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


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

MR画面

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

以上です。