名もなき未知

エンジニアリングとか、日常とかそういうのをまとめる場所。

CodeCovを使ってみた

ただのやってみた系記事です。

要約

背景

画像を jpg, png -> WebP に変換する Command Line Interface なものを作ってるんですが(この変換に関しても何か書きたいが…)、まあなんかパス周りでバグっていたり、画像以外のものを変換せずにそのままコピーするようにしているんですが、どうもバグってるっぽい挙動をしているので、テストを追加しようと思いました。

ついでにテストを実行するなら GitHub Actions で自動テストしたいのと、カバレッジを出してみることにしました。

Python周りのあれこれ

Pipenv でやってますが、 pytest, pytest-cov を入れます。

pipenv install --dev pytest pytest-cov

あとはディレクトリなりをうまい感じに調整したり、 conftest.py とかを書いたり… と地道な活動をして、 pytest が実行できるようにします。

で、カバレッジを出すためにはこういう感じのコマンドを打ち込みます。

pipenv run pytest -v tests/ --cov=./ --cov-report=xml

これで .coverage とか coverage.xml ができます。

適宜 gitignore.io とかで python + Pycharm のテンプレ的な gitignore を追加して無駄なファイルをコミットしないようにしましょう。

CodeCov のあれこれ

CodeCov でアカウント登録が必要です。GitHub, BitBucket, Gitlab あたりで登録できそうな雰囲気なので、とりあえずよく使うホスティングサービスでログインすればよいんではないでしょうか。

で、リポジトリを選んで、発行されている Token をこぴっと来ます。

ちなみにこれを参考にしました。

Codecovを使ってカバレッジを計測する - Qiita

GitHub Actions あれこれ

codecov/codecov-action: GitHub Action that uploads coverage to Codecov

用意されているので、最低限こう書くだけ。

      - name: Upload coverage to Codecov
        uses: codecov/codecov-action@v1
        with:
          token: ${{ secrets.CODECOV_TOKEN }}
          file: ./coverage.xml
          env_vars: OS,PYTHON
          name: codecov-umbrella
          fail_ci_if_error: true
          verbose: true

GitHub Actions で動かすと、下記みたいなものが得られます。カバレッジ率、これはひどい(誠意努力します)

f:id:MireiMixin:20201123232858p:plain

普段超テストをゴリゴリ書いているわけではないですが、もうちょっと努力のしようがありますねというお気持ちになりました。頑張ります。

まとめ

意外とコードカバレッジ表示させるのは簡単でした。むしろ python プロジェクトのパス解決の何かのほうがしんどかったです。PyCharm の補完が弱いときがあってほんと謎。

それと CI と連携して何かやるのがちょっと楽しくなってきました。もっと使いこなしたいですね。もう一個くらいネタがあるはずなので、それはその時にでも。