本記事が目指すこと
- dbt-coreにおけるOSS活動を始めるにあたってやるべきこと、学びになったことを紹介する
- 複数回に渡り連載する予定
注意
- 投稿時点(2023/5/26)での情報に基づくため、本記事で紹介した手順が今後も利用できる保証はありません
- なお、本記事は筆者が所属する会社と関係なく、個人の記事であることをご了承ください
背景
- 筆者は、ちゅらデータ株式会社に務める会社員であるが、就業時間中に職務としてのdbt-coreのOSS活動を始めた(OSS活動自体が初めての経験)
- CONTRIBUTING.mdを読めばテストができる。しかし、ドキュメントには明示的に記載されてない部分があったり、バグがあったりしたため、それらの解決策を提示する
- 投稿時点(2023/5/26)では、拙者がそれらに関するIssueとPRを出しており、マージされた場合は解決される想定
- Issue
- [Bug] Integration test gives an error for the JST timezone #7664
- PR
- Unified to UTC #7665
- Added note before running integration tests #7657
- Issue
- 投稿時点(2023/5/26)では、拙者がそれらに関するIssueとPRを出しており、マージされた場合は解決される想定
(2023/7/11 追記)
上述した筆者が立てたPRがマージされ、IssueもClosedになったため、バグが解決された。mainに取り込まれたため、別途コードを取り込まずにテストが正常に終了するようになった。
前提
- 環境構築ができていること(前回の記事にて手順を紹介)
本編
-
単体テストを実行(データベースを含まないテスト)
-
make test
- 実行されるコマンド
- py: install_deps> python -I -m pip install -r dev-requirements.txt -r editable-requirements.txt
- py: commands[0]> .tox/py/bin/python -m pytest --cov=core test/unit
- 期待される結果(エラーが発生しないこと)
- 869 passed, 5 skipped in 44.21s
- skipされたテストを確認したい場合は、pytestのコマンドに
-v
オプションを追加して実行すると良い
- skipされたテストを確認したい場合は、pytestのコマンドに
- 869 passed, 5 skipped in 44.21s
- 期待される結果(エラーが発生しないこと)
- py: commands[1]> .tox/py/bin/python -m pytest --cov=core tests/unit
- 期待される結果(エラーが発生しないこと)
- 151 passed in 11.59s
- 期待される結果(エラーが発生しないこと)
- 実行されるコマンド
-
-
統合テストを実行(アダプタ(データベース)との接続テスト。前回の記事の環境構築でも紹介したプロファイルを作成しておく必要がある。また、「前提」で紹介したPRを取り入れ、JSTに対応するようにコード修正が必要な点に注意)
-
make integration
- 実行されるコマンド
- py-integration: commands[0]> .tox/py-integration/bin/python -m pytest --cov=core -nauto tests/functional
- 期待される結果(エラーが発生しないこと)
- 645 passed, 1 skipped in 482.71s (0:08:02)
- 期待される結果(エラーが発生しないこと)
- py-integration: commands[1]> .tox/py-integration/bin/python -m pytest --cov=core -nauto tests/adapter
- 期待される結果(エラーが発生しないこと)
- 161 passed in 156.42s (0:02:36)
- 期待される結果(エラーが発生しないこと)
- py-integration: commands[0]> .tox/py-integration/bin/python -m pytest --cov=core -nauto tests/functional
- 実行されるコマンド
-
以上。次回は、変更ログ管理について執筆予定
終わりに
ちゅらデータでは、クレイジーな仲間を募集しているでござる
データエンジニア、もしくはSE系からデータエンジニアになりたい方がいればぜひ、御仁の力量に応じたグレード(ジュニア/ミドル/シニア)にて、応募するでござる