dinges is 'n soort van soos 'n mock voorwerp. Die belangrikste verskil is dat jy nie voor die tyd opgestel verwagtinge. Jy moet net hardloop jou kode, met behulp van 'n dinges in die plek van 'n ander voorwerp of klas, en dit sal teken wat gebeur om dit te. Dan, wanneer jou kode uitgeoefen is, kan jy bewerings oor wat dit gedoen het aan die dinges maak.
'N Nuwe dinges is geskep uit die dinges klas. Jy kan gee dinguses name, wat help met die opsporing van jou toetse, veral wanneer daar is verskeie dinguses in die spel.
& Nbsp; >>> uit dinges invoer dinges
& Nbsp; >>> d = dinges ('root')
& Nbsp; >>> d
& Nbsp;
Toegang tot 'n kenmerk van 'n dinges sal terugkeer om 'n nuwe dinges.
& Nbsp; >>> d.something
& Nbsp;
Daar is 'n paar uitsonderings vir spesiale dinges metodes. Ons sal sien 'n paar in 'n bietjie.
A dinges kan ook soos 'n funksie of metode genoem word. Dit gee nie om hoeveel argumente wat jy dit gee, of wat daardie argumente is. Oproepe na 'n dinges sal altyd dieselfde voorwerp terugkeer, ongeag van die argumente.
& Nbsp; >>> d ()
& Nbsp;
& Nbsp; >>> d ('n argument ')
& Nbsp;
& Nbsp; >>> d (55)
& Nbsp;
OPTEKENING en bewerings
Op enige tyd wat ons kan kry 'n lys van oproepe wat gemaak is na 'n dinges. Elke inskrywing in die oproep lys bevat:
& Nbsp; * die naam van die metode genoem (of "()" As die dinges self is genoem)
& Nbsp; * Die argumente, of () indien geen
& Nbsp; * Die navraag argumnets, of {} indien geen
& Nbsp; * Die waarde wat teruggestuur is aan die oproeper
Hier is 'n lys van die oproepe wat ons tot d gemaak het tot dusver:
& Nbsp; >>> van pprint invoer pprint
& Nbsp; >>> pprint (d.calls)
& Nbsp; [('()', (), {},
& Nbsp; ('()', ('n argument ',), {},
& Nbsp; ('()', (55,), {},
Jy kan filter oproepe by die naam, argumente, en navraag argumente:
& Nbsp; >>> pprint (d.calls ('()', 55))
& Nbsp; [('()', (55,), {},
As jy nie omgee oor 'n bepaalde argument se waarde, kan jy die waarde DontCare gebruik wanneer filter:
& Nbsp; >>> uit dinges invoer DontCare
& Nbsp; >>> pprint (d.calls ('()', DontCare))
& Nbsp; [('()', ('n argument ',), {},
& Nbsp; ('()', (55,), {},
Dinguses kan meer as net eienskappe verkry en word genoem nie. Hulle ondersteun baie Python operateurs. Die doel is om toe te laat, en teken, enige interaksie:
& Nbsp; >>> d = dinges ('root')
& Nbsp; >>> (2 ** d.something) ['hallo'] () / 100 * 'cat'
& Nbsp;
(Hopelik jou werklike wêreld dinges opnames sal nie lyk soos hierdie!)
lap
Dinges bied 'n konteks bestuurder vir lap voorwerpe tydens toetse. Byvoorbeeld:
& Nbsp; >>> uit dinges invoer kol
& Nbsp; >>> invoer urllib2
& Nbsp; >>> met pleister ('urllib2.urlopen'):
& Nbsp; ... druk urllib2.urlopen .__ class__
& Nbsp;
& Nbsp; >>> druk urllib2.urlopen .__ class__
& Nbsp;
Jy kan ook gebruik dit as 'n versierder op jou toets metodes:
& Nbsp; >>>patch ('urllib2.urlopen')
& Nbsp; ... def test_something (self):
& Nbsp; ... pass
& Nbsp; ...
GEVAARLIKE MAGIC
Dinges kan ook outomaties vervang 'n module se globals toe hardloop toetse. Dit laat jou ten volle geïsoleer eenheid toetse te skryf. Sien voorbeelde / urllib2 / test_urllib2.py vir 'n voorbeeld. Die skrywer nie meer beveel hierdie funksie, want dit kan aanmoedig baie bros toetse. Jy moet die pyn van die hand gespot afhanklikhede voel; . die pyn sal jy sê wanneer 'n klas saam met te veel ander
Vereistes :
- Python
Kommentaar nie gevind