このエントリでは、PytestのWarning表示から、
依存ライブラリで出力されるものを非表示にする手順を示します。
結論から言うと、次のようにpytest.iniの設定で、
filterwarningsに無視したいライブラリを指定することで対応できます。
pytest.ini
[pytest]
testpaths = tests
pythonpath = .
filterwarnings =
ignore::DeprecationWarning:flask.* …
このエントリでは、vscodeのTask機能を使って、
LinterやUnitTestを少しの手間で動かせるようにする設定手順を示します。
Pythonのプロジェクトに、
ruff(formatter), flake8(linter), pytest(unittest)
を導入する流れを説明しますが、他の言語でも同じような流れになると思います。
作業ディレクトリの準備
対象プロジェクトの作業ディレクトリを用意します。
(この項目はvscode関係ありません)
Python用のリポジトリを作る
ディレクトリを …
このエントリは、AirflowをSupervisorで動かす手順のメモです。
Apache Airflow
https://airflow.apache.org/
Supervisor
http://supervisord.org/
Airflowは、公式でDockerで動かす方法が用意されています。
Running Airflow in Docker …
このエントリでは、
AirflowのDAG単体テストを行う時に、
外部システムに依存するtaskがあり、その結果に後続処理が影響を受ける場合、
どのように単体テストを書けば良いかを考えたいと思います。
以下のエントリで書いたとおり、
taskを成功させる場合は、mark_success_pattern
にtaskを指定するだけで対応できます。
しかし、失敗時のdownstreamののタスクの挙動を確認したい場合に対応できません。
dag.test()によるAirflowのDAGの単体テストの書き方 | …
AirflowのDAG単体テストについて、
かなり前にimportのテストのやり方は書いたのですが、
DAGの実行をともなう単体テストに触れていなかったので、
このエントリに記載することにします。
AirflowのDAG単体テストの事始め | takemikami.com
https://takemikami.com/2021/1205-airflowdag.html
環境の準備
リポジトリ・Python仮想環境を作成します。
$ mkdir airflow-unittest && cd …
現時点(2024年9月)では、dbt-coreのunittestではsql_headerが使えないので、
その課題に対するmonkeypatchを当ててみました。
[Feature] Make sql_header configuration available on tests | dbt-labs/dbt-core | GitHub
https://github.com/dbt-labs/dbt-core/issues/9775
特にBigQueryを使っている場合は、
sql_headerに一時UDF …
dbt-coreでBigQueryを使う時、
BigQuery Emulatorが使えると便利なのですが、
次のPullRequestにあるように利用することができません。(2024年9月時点では)
Allow Bigquery Emulator settings to be set | dbt-labs/dbt-bigquery | GitHub
https://github.com/dbt-labs/dbt-bigquery/pull/1017
BigQuery Emulator | GitHub …
pre-commitでGitのhookを管理しておくと、
commit時にいろいろなチェックを行ってくれるので、
チェック漏れを事前に防げ便利なのですが、
プロジェクト毎に「.pre-commit-config.yaml」を用意するのも面倒なので、
設定ファイルを書かなくても、有効にできないかを検討してみました。
pre-commit
https://pre-commit.com/
実現方法の概要
「.pre-commit-config.yaml」 …
次のページに、dbt BestPracticeとしてコードスタイルの記載があり、
pre-commit hooksで自動化しようとかも書かれているのですが、
設定例が見当たらなかったので書いてみました。
How we style our dbt projects | dbt
https://docs.getdbt.com/best-practices/how-we-style/0-how-we-style-our-dbt-projects
BestPracticeのコードスタイルでは、以下のようにツールへの …
dbt-coreを使って開発をしているといろいろとyamlファイルを作ることになるので、
これらのスキーマ検証を自動的に行えると便利です。
dbt-core | GitHub
https://github.com/dbt-labs/dbt-core
次のリポジトリで、dbtのjsonschemaが公開されているので、
このエントリでは、
pre-commitのcheck-jsonschemaフックで検証する手順を記載したいと思います。
dbt-jsonschema | GitHub …
Git等のコミットメッセージの書き方のルールに、
「Conventional Commits」という仕様があります。
Conventional Commits
https://www.conventionalcommits.org/ja/v1.0.0/
本エントリでは、
このルールに従っているかをチェックする仕組みを、
GitHubActionsとpre-commitで設定する手順を示します。
GitHubActionsでの設定
次のActionを使うと、
GitHubActions …
以下のActionを使って、GitHubActionsでpre-commitを動かす場合、
既定では全ファイルに対して適用されます。
pre-commit/action | GitHub
https://github.com/pre-commit/action
このエントリでは、
該当のPullRequestで変更したファイルのみに適用したい場合の設定方法を示します。
# ユースケースとしては、
# リンター類を導入して無かったリポジトリに対して、
# 新規・変更部分から段階的に適用していきたい場合など。
…
CucumberやBehave等のテスト結果はAllureを使うと、
エビデンスの保存もでき、レポートも綺麗に確認ができます。
ただHTML形式のレポートではHostingする環境が必要が必要になります。
GitHubを使っている場合、Markdown形式であれば、
PullRequestのコメント・ActionsのJob Summaries等でお手軽に表示できるので、
このエントリでは、Markdown形式に変換する事を考えてみます。
結論からになりますが、
次に示すファイル構成でリポジトリを作っ …
このエントリでは、
BehaveからSeleniumWebDriverを使って、
ブラウザのスクリーンショットを撮り、Allureのレポートに添付する流れを記載します。
BehaveからSeleniumWebDriverを使うならbehave-webdriverと言うライブラリがありますが、
対応しているSeleniumがやや古いのと、日本語でシナリオ書けないので、
このエントリでは、ライブラリを使用せずに対応することにします。
behave-webdriver …
このエントリでは、Behaveの非同期処理を試したメモを残します。
Behaveの非同期処理については、以下で紹介されています。
Testing asyncio Frameworks | Noteworthy in Version 1.2.6 | behave https://behave.readthedocs.io/en/stable/new_and_noteworthy_v1.2.6.html#testing-asyncio-frameworks
非同期処理には、以下の2種類があります。 …