dingus a fajta, mint egy ál objektumot. A fő különbség az, hogy itt nem állítunk fel várakozásokat idő előtt. Te csak fuss a kódot, egy dingus helyett egy másik objektum vagy osztály, és akkor rögzíti mi történik vele. Aztán, ha a kód nem éltek, tudod, hogy állításait arról hogy mit csináltak a dingus.
Egy új dingus jön létre a Dingus osztályban. Adhat dinguses nevét, ami segít a hibakeresés a vizsgálatok, különösen akkor, ha több dinguses játékban.
& Nbsp; >>> from dingus importálni Dingus
& Nbsp; >>> d = Dingus ('root')
& Nbsp; >>> d
& Nbsp;
Hozzáférés minden attribútuma dingus visszatér egy új dingus.
& Nbsp; >>> d.something
& Nbsp;
Van azonban néhány kivétel speciális dingus módszerek. Meglátjuk, néhányan egy kicsit.
A dingus is nevezhető, mint egy függvény vagy metódus. Nem érdekel, hogy hány érvek adsz, vagy mi ezek az érvek. Kéri, hogy a dingus mindig vissza ugyanazt az objektumot, függetlenül az érveket.
& Nbsp; >>> d ()
& Nbsp;
& Nbsp; >>> d ("érv")
& Nbsp;
& Nbsp; >>> d (55)
& Nbsp;
A felvétel és állításokat
Bármikor kaphatunk egy listát a hívások, hogy tettek egy dingus. Minden bejegyzés a híváslista tartalmazza:
& Nbsp; * a módszer neve is nevezik (vagy "()", ha a dingus magát hívták)
& Nbsp; * A érveket, vagy (), ha nincs
& Nbsp; * A kulcsszó argumnets, vagy {}, ha nincs
& Nbsp; * az értéket, amelyet a hívónak
Itt van egy lista a hívások tettük, hogy d eddig:
& Nbsp; >>> from pprint import pprint
& Nbsp; >>> pprint (d.calls)
& Nbsp; [('()', (), {},
& Nbsp; ("()", (az "érv",), {},
& Nbsp; ("()", (55,), {},
Szűrheti nevén szólít, érvek, és a kulcsszó érvek:
& Nbsp; >>> pprint (d.calls ('()', 55))
& Nbsp; [('()', (55,), {},
Ha nem érdekel egy adott argumentum értékét, akkor az értéket DontCare szûrésénél:
& Nbsp; >>> from dingus importálni DontCare
& Nbsp; >>> pprint (d.calls ('()', DontCare))
& Nbsp; [('()', (az "érv",), {},
& Nbsp; ("()", (55,), {},
Dinguses többet tehet, mint csak azt attribútumok elérhető és hívható. Támogatják az Python szereplők. A cél az, hogy, és rögzíti, semmilyen beavatkozást:
& Nbsp; >>> d = Dingus ('root')
& Nbsp; >>> (2 ** d.something) ['hello'] () / 100 * 'ize'
& Nbsp;
(Remélhetőleg a valós dingus felvételek nem így néz ki!)
foltozása
Dingus biztosít összefüggésben vezetője folt tárgyakat a próbák során. Például:
& Nbsp; >>> from dingus import javítás
& Nbsp; >>> import urllib2
& Nbsp; >>> patch ("urllib2.urlopen"):
& Nbsp; ... print urllib2.urlopen .__ class__
& Nbsp;
& Nbsp; >>> print urllib2.urlopen .__ class__
& Nbsp;
Ön is használja ezt a dekoratőr a vizsgálati módszerek:
& Nbsp; >>>patch ("urllib2.urlopen)
& Nbsp; ... def test_something (self):
& Nbsp; ... passz
& Nbsp; ...
BALESETVESZÉLYES MAGIC
Dingus is automatikusan helyettesíti a modul globals futtatásakor tesztek. Ez lehetővé teszi, hogy írjon teljesen elszigetelt egység vizsgálatok. Lásd a példákat / urllib2 / test_urllib2.py egy példát. A szerző már nem ajánlja ezt a funkciót, mivel ösztönözheti nagyon törékeny tesztek. Meg kell érezni a fájdalmat a kézzel gúnyos függőségek; A fájdalom jelezni fogja, ha egy osztály működik együtt túl sokan vannak.
követelmények :
- Python
Hozzászólás nem található