ビードロフック

Susan Sarandon
Susan Sarandonオリジナル
2024-11-30 13:32:11406ブラウズ

Vedro Hooks

Vedro はプラグイン システムを通じて強力な拡張性を提供し、さまざまなプロジェクトやチーム間で共有できる堅牢で再利用可能なソリューションを作成できます。しかし、単にコードベースを実験したり、コンセプトのプロトタイプを作成したり、小さな調整を追加したりしているだけの場合はどうなるでしょうか?完全なプラグインを作成するのはやりすぎのように感じるかもしれません。そこで vedro フックが登場します。

vedro-hooks は、さまざまな Vedro イベントにカスタム フックをアタッチできる軽量ライブラリです。テストを実行する前にモック サーバーを起動する場合でも、エンドツーエンド テスト用にブラウザを起動する場合でも、カスタム ログを設定する場合でも、vedro-hooks を使用すると、最小限の定型文で機能を挿入できます。

実用的な例

スイート内の遅いテストを特定したいとします。実行に 1 秒以上かかるテストを「遅い」と定義しましょう。従来は、このためにカスタム プラグインを作成する必要がありました。それは次のようになります:

from vedro.core import Dispatcher, Plugin, PluginConfig
from vedro.events import ScenarioFailedEvent, ScenarioPassedEvent

class SlowTestPlugin(Plugin):
    def subscribe(self, dispatcher: Dispatcher):
        dispatcher.listen(ScenarioPassedEvent, self.on_scenario_end)
        dispatcher.listen(ScenarioFailedEvent, self.on_scenario_end)

    def on_scenario_end(self, event: ScenarioPassedEvent | ScenarioFailedEvent):
        elapsed = event.scenario_result.elapsed
        if elapsed > 1.0:
            event.scenario_result.add_extra_details("⚠️ Slow test!")

class SlowTestPluginConfig(PluginConfig):
    plugin = SlowTestPlugin

このアプローチは機能しますが、本格的なプラグインを作成するには、より多くのセットアップと追加の定型文が必要です。再利用可能なソリューションには最適ですが、簡単に実験するには面倒に感じる可能性があります。

フックを使用して簡素化する

vedro-hook を使用すると、わずか数行のコードで同じ機能を実現できます。

from vedro_hooks import on_scenario_passed, on_scenario_failed

@on_scenario_passed
@on_scenario_failed
def highlight_slow_tests(event):
    elapsed = event.scenario_result.elapsed
    if elapsed > 1.0:
        event.scenario_result.add_extra_details("⚠️ Slow test!")

このコードは、デコレーターを使用して、シナリオが成功または失敗したときに呼び出される関数を登録します。経過時間をチェックし、シナリオに 1 秒以上かかった場合は詳細を追加します。

Scenarios
*
 ✔ retrieve user info (0.52s)
 ✔ retrieve user repos (1.02s)
   |> ⚠️ Slow test!

# 2 scenarios, 2 passed, 0 failed, 0 skipped (1.54s)

フックの管理: 欠点と解決策

この方法でフックを使用する場合の欠点の 1 つは、プロジェクト内のどこからでもフックを登録できるため、後で追跡するのが難しくなる可能性があることです。対照的に、Vedro のプラグインは vedro.cfg.py ファイルに登録され、すべてのプラグイン設定の一元的な場所を提供します。

コードベース全体でフックが登録されることによるマイナス面を軽減するために、vedro-hooks は --hooks-show コマンドライン引数を提供します。有効にすると、テスト プロセスの完了後に、登録されたすべてのフックの概要とそのソースの場所が表示されます。これは、どのフックがアクティブであるかをデバッグおよび確認するのに役立ちます。

Scenarios
*
 ✔ retrieve user repos

# [vedro-hooks] Hooks:
#  - 'highlight_slow_tests' (ScenarioFailedEvent) vedro.cfg.py:26
#  - 'highlight_slow_tests' (ScenarioPassedEvent) vedro.cfg.py:26
# 1 scenario, 1 passed, 0 failed, 0 skipped (0.55s)

--hooks-show は便利ですが、デバッグ中に忘れずに使用する必要があります。プラグイン設定の明確さと一貫性を維持するために、フックを vedro.cfg.py などの中央の場所に登録することがベスト プラクティスです。

結論

vedro-hooks は、カスタム プラグインを作成するオーバーヘッドなしで Vedro テストを強化できる素晴らしいツールです。機能を拡張するための迅速で集中的なソリューションが必要な場合に威力を発揮します。これを賢く使用し、構成を整理しておくことで、シンプルさと保守性の両方の長所を享受できます。

以上がビードロフックの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。