首頁 >後端開發 >Python教學 >韋德羅鉤子

韋德羅鉤子

Susan Sarandon
Susan Sarandon原創
2024-11-30 13:32:11418瀏覽

Vedro Hooks

Vedro 透過其外掛系統提供強大的可擴展性,使您能夠創建強大的、可重複使用的解決方案,並可以在不同的專案和團隊之間共享。但是,如果您只是試驗程式碼庫、建立概念原型或添加小調整怎麼辦?編寫一個完整的插件可能感覺有點大材小用。這就是 vedro-hooks 發揮作用的地方。

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

這種方法有效,但是創建一個成熟的插件需要更多的設定和額外的樣板。它非常適合可重複使用的解決方案,但對於快速實驗來說可能會感覺很麻煩。

使用 Hook 進行簡化

使用 vedro-hooks,只需幾行程式碼即可實現相同的功能:

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)

管理 Hook:缺點和解決方案

以這種方式使用鉤子的一個缺點是它們可以從項目中的任何位置註冊,這可能會使以後更難追蹤它們。相比之下,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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn