Was ist spec und spec_set?

10

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.

    
Hello lad 15.08.2014, 08:24
quelle

2 Antworten

5

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%     
falsetru 15.08.2014, 08:37
quelle
0

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.

    
rmcc 15.08.2014 08:42
quelle

Tags und Links