韋德羅鉤子
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中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Python适合数据科学、Web开发和自动化任务,而C 适用于系统编程、游戏开发和嵌入式系统。Python以简洁和强大的生态系统著称,C 则以高性能和底层控制能力闻名。

2小時內可以學會Python的基本編程概念和技能。 1.學習變量和數據類型,2.掌握控制流(條件語句和循環),3.理解函數的定義和使用,4.通過簡單示例和代碼片段快速上手Python編程。

Python在遊戲和GUI開發中表現出色。 1)遊戲開發使用Pygame,提供繪圖、音頻等功能,適合創建2D遊戲。 2)GUI開發可選擇Tkinter或PyQt,Tkinter簡單易用,PyQt功能豐富,適合專業開發。

Python更易學且易用,C 則更強大但複雜。 1.Python語法簡潔,適合初學者,動態類型和自動內存管理使其易用,但可能導致運行時錯誤。 2.C 提供低級控制和高級特性,適合高性能應用,但學習門檻高,需手動管理內存和類型安全。

兩小時內可以學到Python的基礎知識。 1.學習變量和數據類型,2.掌握控制結構如if語句和循環,3.了解函數的定義和使用。這些將幫助你開始編寫簡單的Python程序。

要在有限的時間內最大化學習Python的效率,可以使用Python的datetime、time和schedule模塊。 1.datetime模塊用於記錄和規劃學習時間。 2.time模塊幫助設置學習和休息時間。 3.schedule模塊自動化安排每週學習任務。

Python在自動化、腳本編寫和任務管理中表現出色。 1)自動化:通過標準庫如os、shutil實現文件備份。 2)腳本編寫:使用psutil庫監控系統資源。 3)任務管理:利用schedule庫調度任務。 Python的易用性和豐富庫支持使其在這些領域中成為首選工具。

Python在web開發、數據科學、機器學習、自動化和腳本編寫等領域有廣泛應用。 1)在web開發中,Django和Flask框架簡化了開發過程。 2)數據科學和機器學習領域,NumPy、Pandas、Scikit-learn和TensorFlow庫提供了強大支持。 3)自動化和腳本編寫方面,Python適用於自動化測試和系統管理等任務。
