Following system colour scheme Selected dark colour scheme Selected light colour scheme

Python Enhancement Proposals

PEP 417 – Aufnahme von mock in die Standardbibliothek

Autor:
Michael Foord <michael at python.org>
Status:
Final
Typ:
Standards Track
Erstellt:
12. Mär 2012
Python-Version:
3.3
Post-History:
12. Mär 2012
Resolution:
Python-Dev Nachricht

Inhaltsverzeichnis

Zusammenfassung

Dieses PEP schlägt die Aufnahme der Testbibliothek mock [1] in die Python-Standardbibliothek als unittest.mock vor.

Begründung

Das Erstellen von Mock-Objekten für Tests ist ein häufiger Bedarf in Python. Viele Entwickler erstellen ad-hoc-Mocks nach Bedarf in ihren Test-Suiten. Dies ist derzeit, was wir in der Python-Test-Suite tun, wo eine standardisierte Mock-Objektbibliothek hilfreich wäre.

Es gibt viele Mock-Objektbibliotheken für Python [2]. Davon ist mock mit Abstand die beliebteste, mit so vielen Downloads auf PyPI wie alle anderen Mocking-Bibliotheken zusammen.

Ein Vorteil von mock ist, dass es sich um eine Mocking-Bibliothek und nicht um ein Framework handelt. Es bietet ein konfigurierbares und flexibles Mock-Objekt, ohne voreingenommen darüber zu sein, wie Sie Ihre Tests schreiben. Die mock-API ist nun gut bewährt und stabil.

mock behandelt auch das sichere Monkeypatching und Unmonkeypatching von Objekten während des Gültigkeitsbereichs eines Tests. Dies ist schwer sicher zu handhaben, und viele Entwickler/Projekte ahmen diese Funktionalität nach (oft falsch). Eine standardisierte Methode, dies zu tun, die die Komplexität des Patchings in Anwesenheit des Descriptor-Protokolls (usw.) handhabt, ist nützlich. Leute fragen nach einer "Patch" [3] Funktion für unittest. Dies über mock.patch zu tun, ist einer Neuimplementierung eines Teils dieser Funktionalität in unittest vorzuziehen.

Hintergrund

Die Aufnahme von mock in die Python-Standardbibliothek wurde auf dem Python Language Summit 2012 besprochen und vereinbart.

Offene Fragen

Ab Version 0.8, die zum Zeitpunkt des Schreibens aktuell ist, ist mock mit Python 2.4-3.2 kompatibel. Der Umzug in die Python-Standardbibliothek wird die Entfernung einiger Python 2-spezifischer "Kompatibilitäts-Hacks" ermöglichen.

mock 0.8 führte eine neue Funktion, "auto-speccing", ein, die eine ältere mock-Funktion namens "mocksignature" veraltet. Die "mocksignature"-Funktionalität kann vor der Aufnahme vollständig aus mock entfernt werden.

Referenzen


Quelle: https://github.com/python/peps/blob/main/peps/pep-0417.rst

Zuletzt geändert: 2025-02-01 08:59:27 GMT