Vedro-Haken

Susan Sarandon
Susan SarandonOriginal
2024-11-30 13:32:11418Durchsuche

Vedro Hooks

Vedro bietet durch sein Plugin-System leistungsstarke Erweiterbarkeit, sodass Sie robuste, wiederverwendbare Lösungen erstellen können, die von verschiedenen Projekten und Teams gemeinsam genutzt werden können. Aber was ist, wenn Sie nur mit Ihrer Codebasis experimentieren, ein Konzept prototypisieren oder eine kleine Optimierung vornehmen? Das Schreiben eines vollständigen Plugins könnte sich übertrieben anfühlen. Hier kommen Vedro-Haken ins Spiel.

vedro-hooks ist eine leichtgewichtige Bibliothek, mit der Sie benutzerdefinierte Hooks an verschiedene Vedro-Ereignisse anhängen können. Ganz gleich, ob Sie einen Mock-Server starten, bevor Tests ausgeführt werden, einen Browser für End-to-End-Tests starten oder eine benutzerdefinierte Protokollierung einrichten, mit Vedro-Hooks können Sie Funktionalität mit minimalem Boilerplate einbauen.

Ein praktisches Beispiel

Angenommen, Sie möchten langsame Tests in Ihrer Suite identifizieren – definieren wir „langsam“ als jeden Test, dessen Ausführung länger als 1 Sekunde dauert. Normalerweise müssten Sie hierfür ein benutzerdefiniertes Plugin erstellen. So könnte das aussehen:

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

Dieser Ansatz funktioniert, aber die Erstellung eines vollwertigen Plugins erfordert mehr Setup und zusätzliche Boilerplate. Es eignet sich hervorragend für wiederverwendbare Lösungen, kann aber beim schnellen Experimentieren umständlich wirken.

Vereinfachen mit Hooks

Mit Vedro-Hooks können Sie die gleiche Funktionalität mit nur wenigen Codezeilen erreichen:

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!")

Dieser Code verwendet Dekoratoren, um eine Funktion zu registrieren, die aufgerufen wird, wenn ein Szenario erfolgreich ist oder fehlschlägt. Es überprüft die verstrichene Zeit und fügt zusätzliche Details hinzu, wenn das Szenario länger als 1 Sekunde gedauert hat.

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

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

Hooks verwalten: Nachteile und Lösungen

Ein Nachteil dieser Verwendung von Hooks besteht darin, dass sie von überall in Ihrem Projekt registriert werden können, was es möglicherweise schwieriger macht, sie später aufzuspüren. Im Gegensatz dazu werden Plugins in Vedro in der Datei vedro.cfg.py registriert und bieten so einen zentralen Ort für alle Ihre Plugin-Konfigurationen.

Um den Nachteil der Registrierung von Hooks in Ihrer gesamten Codebasis zu mildern, stellt vedro-hooks das Befehlszeilenargument --hooks-show bereit. Wenn diese Option aktiviert ist, wird nach Abschluss des Testvorgangs eine Zusammenfassung aller registrierten Hooks zusammen mit ihren Quellspeicherorten angezeigt. Dies ist nützlich zum Debuggen und Überprüfen, welche Hooks aktiv sind.

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)

Obwohl --hooks-show hilfreich ist, müssen Sie daran denken, es beim Debuggen zu verwenden. Es empfiehlt sich nach wie vor, Ihre Hooks an einem zentralen Ort wie vedro.cfg.py zu registrieren, um Klarheit und Konsistenz bei den Plugin-Konfigurationen zu gewährleisten.

Abschluss

vedro-hooks ist ein fantastisches Tool zur Verbesserung Ihrer Vedro-Tests, ohne den Aufwand für die Erstellung eines benutzerdefinierten Plugins. Es glänzt, wenn Sie eine schnelle, gezielte Lösung zur Erweiterung der Funktionalität benötigen. Wenn Sie es sinnvoll nutzen und Ihre Konfiguration organisiert halten, können Sie das Beste aus beiden Welten genießen: Einfachheit und Wartbarkeit.

Das obige ist der detaillierte Inhalt vonVedro-Haken. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn