2
0

More than 1 year has passed since last update.

dbt-coreにおけるOSS活動ことはじめその9 ~ テストカバレッジをローカルで確認する話 ~

Posted at

本記事が目指すこと

注意

  • 本記事は筆者が所属する会社と関係なく、個人の記事であることをご了承ください

背景

  • 筆者は、ちゅらデータ株式会社に務める会社員であるが、就業時間中に職務としてのdbt-coreのOSS活動を始めた(OSS活動自体が初めての経験)
  • CONTRIBUTING.mdには明示的に記載されてない部分があったため、それらの解説を含む

本編

前提

本記事執筆時点(2023年8月17日)では、dbt-coreに対してPRを作成し、コミットするとGitHubActionsによるCIテストが自動で実施される。
その際に、Codecovと呼ばれるコードのカバレッジ情報が表示される可視化ツールを用いて、どの部分のコードがテストされており、どの部分がカバーされていないのかを確認することができる。これがCIに組み込まれており、例えば、追加したコードに対するテストを書き忘れた場合は、マージする前に検知することが可能となる。なお、テストカバレッジに何らかの異常が検知された場合は、そのPRはマージされることはない。

問題

さて、この便利なツールであるCodecovだが、問題が1つある。
それは、GitHubのブラウザ上からはcommitしたタイミングでCIが走り、そこから生成されるカバレッジレポートを元にカバレッジを確認可能であるが、ローカルで確認する手段がないということである。(CodeCov CLIというローカルからCodeCovを操作可能なCLIが用意されているが、アップロード用のトークンがdbt-coreのリポジトリから取得できないため利用できない)
ローカルでカバレッジが確認できないと、不要なcommitを増やすことになり、レビュアーの手間が増えたり、CIによるコストが増加したりで、開発に支障が生じる。

問題解決の手順

結論から述べると、coverageというモジュールを用いてローカル端末からテストカバレッジレポートをブラウザ上で確認できる。
具体的な手順を以下に示す。

1.ローカルでテストを実行する

  • 例えば、単体テストmake testや統合テストmake integrationなどを実行する

2.coverage htmlを実行する

  • dbtv1.6の環境をmake devで作成した場合、既にcoverageモジュールがインストール済み。インストールしていない場合は、pipを用いてインストール可能。python3 -m pip install coverage

3.htmlcov/index.htmlをブラウザで開く

  • VSCodeを使って開発する場合は、ファイルを右クリックして「Open In Default Browser」をクリックすると、カバレッジレポートのページがデフォルトのブラウザで立ち上がる

解決できる理由

1.では、.corverageというテストカバレッジの内容を含むファイルが作成される。
2.では、.corverageを元にhtmlcovというカバレッジレポートを含むディレクトリが作成される。
3.では、htmlcovディレクトリにあるindex.htmlファイルをブラウザで開く。
という流れである

うまくいくと以下のようなページが表示されるはずである

image.png

特定のファイルについてコード単位でカバレッジが確認できる
image.png

以上。追加したコードに付随するテストを開発するときに役立てていただきたい。

終わりに

ちゅらデータでは、クレイジーな仲間を募集しているでござる
データエンジニア、もしくはSE系からデータエンジニアになりたい方がいればぜひ、御仁の力量に応じたグレード(ジュニア/ミドル/シニア)にて、応募するでござる

2
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
2
0