Ich bin neu zu Pytest. Wann wird @ pytest.hookimpl ausgeführt? Und was ist die vollständige Nutzung davon? Ich habe es mit Baumstämmen versucht. Für (hookwrapper = true), es ist Drucken, 3 Sätze von nach und vor Ertrag für einen einzelnen Test.Wann ist @ Pytest.hookimpl führt
Antwort
pytest verwendet @pytest.hookimpl
nur zum Beschriften von Hook-Methoden. (So @pytest.hookimpl
ausgeführt wird, wenn pytest der Hook-Methode sammelt.)
Wenn Sie den Quellcode pytest lesen, können Sie diese Codes finden:
def normalize_hookimpl_opts(opts):
opts.setdefault("tryfirst", False)
opts.setdefault("trylast", False)
opts.setdefault("hookwrapper", False)
opts.setdefault("optionalhook", False)
Es bedeutet pytest die Hook-Methode mit @pytest.hookimpl(tryfirst=False, trylast=False, hookwrapper=False, optionalhook=False)
beschriften wird Standard. Pytest behandelt diese Hook-Methoden auf unterschiedliche Weise entsprechend dieser Bezeichnung (Decorator), wenn sie ausgeführt werden.
Nehmen Sie zum Beispiel den Parameter hookwrapper
. Wenn die Hook-Methode als hookwrapper=True
gekennzeichnet ist, wird pytest den Teil zuerst vor yield
ausführen und dann andere Hook-Methoden des gleichen Typs ausführen. Nachdem diese Methoden ausgeführt wurden, wird der Teil nach yield
ausgeführt. (Diese Funktion ist wie pytest Fixtures.)
Eine Verwendung von @pytest.hookimpl(hookwrapper=True)
ist, dass Sie die Gesamtkosten Zeit einiger Hook-Methoden berechnen können. (Hier wird der Beispielcode die Tests berechnen sammeln Zeit.)
@pytest.hookimpl(hookwrapper=True)
def pytest_collection(session):
collect_timeout = 5
collect_begin_time = time.time()
yield
collect_end_time = time.time()
c_time = collect_end_time - collect_begin_time
if c_time > collect_timeout:
raise Exception('Collection timeout.')
- 1. Wann führt ein Lambda in einer Erweiterungsmethode zu viel?
- 2. Wann ist IPPROTO_UDP erforderlich?
- 3. Wann ist Backtracking notwendig?
- 4. Wann ist JavaScript synchron?
- 5. Wann ist File.join nützlich?
- 6. Wann ist ROBOCOPY fertig?
- 7. Wann ist ScriptManager/ScriptManagerProxy erforderlich?
- 8. Wann ist JWTSecurityTokenHandler.ValidateToken() tatsächlich gültig?
- 9. Wann ist std :: chrono Epoche?
- 10. Wann ist SessionStorage tatsächlich gelöscht?
- 11. Wann ist 'Ertrag' wirklich nötig?
- 12. Wissen, wann DataBinding abgeschlossen ist
- 13. Wann ist ein Lambda trivial?
- 14. Wann ist Q_NULLPTR zu verwenden?
- 15. Wann ist eine API überentwickelt?
- 16. feststellen, wann Sifr fertig ist?
- 17. Ermitteln, wann stringByEvaluatingJavaScriptFromString beendet ist
- 18. Wann ist VirtualAlloc Vs neu?
- 19. Wann AzureQueueSink zu verwenden ist
- 20. Wann ist (x ||! X) falsch?
- 21. Wann ist $ .cache zu groß?
- 22. Wann ist ccache zu verwenden?
- 23. Wann ist ein ConcurrentSkipListSet nützlich?
- 24. Wann ist VK_IMAGE_LAYOUT_GENERAL zu verwenden?
- 25. Wann ist PHPhotoLibraryChangeObserver photoLibraryDidChange: aufgerufen?
- 26. Wann benötigt RequireJS einen asynchronen Aufruf? Wann ist es synchron?
- 27. Wann CheckBox zu verwenden ist und wann Switch
- 28. Wann verwende ich Parser-Generator, wann ist Regex genug?
- 29. Wann 'if ... else if' und wann zu verwenden ist
- 30. Wann GWT zu verwenden ist und wann nicht
Eine weitere sehr gute Informationsquelle für Haken für pluggy ist, das Plugin-Modul, das Basis für pytest ist: http: //pluggy.readthedocs. io/de/letzte / – SuperGeo