Amazon Athena の自動テストを作る その2

概要

雑多ブログなので、話題が錯綜しますが、この記事のその後

いろいろあって、一通りsmokeテストのようなものを作成することができた。

ちなみにテーブルは「データベースDB1のテーブルAのデータに対して、ETL処理を行い、データベースDB2のテーブルBを作る」のようになっていた。そのため、DB1のテーブルAとDB2のテーブルBは総件数が同じじゃないとおかしいよねとか、このデータは一致していないとおかしいよねみたいなことが確認事項となる。

そのため、テストは、以下のような感じ

テスト内容

①count文を投げて、1件以上であることを確認する

②DB1.テーブルAのcountとDB2.テーブルBの件数が同じであることを確認する

③DB1.テーブルAとDB2.テーブルBのデータをサンプリング(1件~数件)して、一致していることを確認する

④Describe文を投げて、テーブル定義がローカルファイルと一致しているかを確認する

こんな感じのテストを作成することができた。

実行時間

前回、ローカルからのテストは実行時間がかかると書いたが、

retryingのオプションによるものだということが後日わかった

pypiのExamplesに英語だけど説明が載っているので、そこを真似すれば調整ができた

また、pytest-parallelで並列実行も問題なくできた

インストールして、

pytest --workers auto

のようにするだけでいい感じにやってくれる。

各テストに依存関係がないように作ってあるのが前提だと思うが、全テーブルを網羅した場合にはテスト件数が多くなってしまうことはさけられないので、活用できるようにしたいところ

ハマったところと残課題

まだサーバにあげて定期実行させるようなことはできていないので、できるようになったらまた記事にしたい。

describe文だけローカルから実行できなかったり、スイッチロールの設定をしたり

というところは結構ハマったが、また機会があればそれも記事にしたいところ・・・