LoginSignup
0
0

Djangoでカバレッジの取得と, Codecovでカバレッジ確認をできるようしてバッジを付ける

Last updated at Posted at 2023-09-19

django でカバレッジを確認する方法

coverage.py を使用することで確認できる.
とりあえずインストール

pip install coverage

djangoでテストを書いている前提で進める.
テストの書き方は下記を参考にすると良い

通常は以下のように実行してテストを行うと思う

python3 manage.py test

カバレッジを取得するときは,

coverage run --source='.' manage.py test

これでカレントディレクトリ以下のファイルはすべて対象にしてカバレッジを取得する.
カバレッジを確認するには,

coverage report

で確認可能
ここでCodecov の連携は以下のサイトから GitHub と連携しておく必要がある.

これを登録すると settings から "CODECOV_TOKEN" という鍵が取得できるため
予めGitHubのSecretに登録しておく.

使用するdocker comopose ファイルは以下のようになる.
今回coverage サービスしか記載していないが本来はいくつかサービスがある.
自分の環境に合わせて追加してください.
(DBとか)

docker-compose.yaml
version: "3.3"

services:
  coverage:
    build:
      context: .
      dockerfile: Dockerfile
    environment:
      - REDIS_URL=redis://redis:6379
      - OPENAI_API_KEY=${OPENAI_API_KEY}
      - DATABASE_URL=postgres://user:password@db:5432/db
      - DJANGO_DEBUG=True
      - CODECOV_TOKEN=${CODECOV_TOKEN}
    command: bash -c "coverage run --source='.' manage.py test &&
      coverage xml && 
      codecov -f coverage.xml"
    volumes:
      - .:/code

上記で参照している Dockerfile

Dockerfile
# DockerのPython公式イメージをベースにする
FROM python:3.10

# 環境変数の設定
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

# 作業ディレクトリを作成
WORKDIR /code

# requirements.txtをコピー
COPY requirements.txt /code/

# 必要なパッケージのインストール
RUN pip install --upgrade pip && pip  install -r requirements.txt

そして.github/workflowsディレクトリにcoverageを取得するワークフローファイルを置く

coverage.yaml
name: Coverage

on:
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]
env:
  OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
  CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v2

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v1


      - name: Cache Docker layers
        uses: actions/cache@v2
        with:
          path: /tmp/.buildx-cache
          key: ${{ runner.os }}-buildx-${{ github.sha }}
          restore-keys: |
            ${{ runner.os }}-buildx-

      - name: run coverage
        run: |
          docker-compose -f docker-compose-coverage.yaml up --build --exit-code-from coverage

これで自動的にcodecovにカバレッジがアップロードされる.

バッジの追加

これが一番やりたかったこと
Codecovの対象となるリポジトリページに有る Settings -> Badges & Graphs からCodecov Badgeの部分を自分のリポジトリの README.md に貼り付けるとカバレッジ率が確認できる.

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