Ich benutze Mock 1.0.1 python. In der Pfadfunktionsdefinition gibt es zwei optionale Argumente namens spec und spec_set (auch auto_spec)
%Vor%Ich habe die Dokumentation durchgelesen, finde aber keine Erklärung dafür. Vielleicht sind sie Testbedingungen? Es wird nett sein, wenn jemand Informationen geben kann, danke.
unittest.mock
in Python 3.x ist im Grunde dasselbe mit mock
.
Gemäß der Dokumentation unittest.mock
:
spec : Dies kann entweder eine Liste von Zeichenfolgen oder ein vorhandenes Objekt sein (a Klasse oder Instanz), die als Spezifikation für das Mock-Objekt dient. Wenn Sie ein Objekt übergeben, wird durch Aufrufen eine Liste von Strings gebildet dir auf dem Objekt (mit Ausnahme von nicht unterstützten magischen Attributen und Methoden). Wenn Sie auf ein Attribut zugreifen, das nicht in dieser Liste enthalten ist, wird ein Attributfehler.
Wenn spec ein Objekt ist (anstatt einer Liste von Strings), dann __class__ Gibt die Klasse des Spezifikationsobjekts zurück. Dadurch können Mocks passieren isinstance Tests.
spec_set : Eine strengere Variante der Spezifikation. Falls verwendet, versuchen, oder zu setzen Erhalte ein Attribut für den Schein, der nicht auf dem übergebenen Objekt liegt spec_set wird einen AttributeError auslösen.
Aktualisieren Differenz zwischen spec
und spec_set
.
Mit spec
können Sie ein Attribut festlegen, das nicht angegeben ist, während es mit spec_set
nicht erlaubt ist, ein nicht spezifiziertes Attribut zu setzen.
Beispiel:
%Vor%Weitere Informationen finden Sie hier: Ссылка
• spec: Dies kann entweder eine Liste von Zeichenfolgen oder ein vorhandenes Objekt (eine Klasse oder Instanz) sein, die als Spezifikation für das Mock-Objekt dient. Wenn Sie ein Objekt übergeben, wird durch Aufrufen von dir für das Objekt eine Liste von Strings gebildet (mit Ausnahme von nicht unterstützten magischen Attributen und Methoden). Wenn Sie auf ein Attribut zugreifen, das nicht in dieser Liste enthalten ist, wird ein AttributeError ausgelöst. Wenn es sich bei der Spezifikation um ein Objekt (und nicht um eine Liste von Zeichenfolgen) handelt, gibt class die Klasse des Spezifikationsobjekts zurück. Dadurch können Mocks Instanztests bestehen.
• spec_set: Eine strengere Variante der Spezifikation. Wenn Sie versuchen, ein Attribut für den Mock zu setzen oder zu erhalten, das sich nicht auf dem Objekt befindet, das als spec_set übergeben wird, wird ein AttributeError ausgelöst.