dingus ay isang uri ng tulad ng isang kunwaring bagay. Ang pangunahing pagkakaiba ay na hindi mo i-set up ang mga inaasahan maaga. Pinatatakbo mo lang ang iyong code, ang paggamit ng isang dingus kapalit ng isa pang bagay na o klase, at ito ay mag-record kung ano ang mangyayari dito. Pagkatapos, sa sandaling ang iyong code ay na-exercised, maaari kang magsagawa assertions tungkol sa kung ano ang ginawa nito sa dingus.
Ang isang bagong dingus ay ginawa mula sa Dingus class. Maaari mong ibigay dinguses mga pangalan, na tumutulong sa pag-debug ang iyong mga pagsubok, lalo na kapag mayroong maramihang dinguses sa pag-play.
& Nbsp; >>> mula dingus-import Dingus
& Nbsp; >>> d = Dingus ('ugat')
& Nbsp; >>> d
& Nbsp;
Pag-access sa anumang mga katangian ng isang dingus ay magbabalik ng isang bagong dingus.
& Nbsp; >>> d.something
& Nbsp;
Mayroong ilang mga pagbubukod para sa mga pamamaraan ng espesyal na dingus. Susubukan naming makita ang ilang sa ilang sandali.
Ang isang dingus ay maaari ring tinatawag na tulad ng isang function o pamamaraan. Ito ay hindi mahalaga kung gaano karaming mga argumento mo bigyan ito o kung ano ang mga argumento ay. Ang mga tawag sa isang dingus ay palaging ibalik ang parehong bagay, anuman ang mga argumento.
& Nbsp; >>> d ()
& Nbsp;
& Nbsp; >>> d ('argumento')
& Nbsp;
& Nbsp; >>> d (55)
& Nbsp;
-record at ASSERTIONS
Sa anumang oras maaari naming makakuha ng isang listahan ng mga tawag na ginawa sa isang dingus. Ang bawat entry sa listahan ng tawag ay naglalaman ng:
& Nbsp; * ang pangalan ng pamamaraan na tinatawag (o "()" kung ang dingus mismo ay tinawag)
& Nbsp; * Ang mga argumento, o () kung wala
& Nbsp; * Ang keyword argumnets, o {} kung wala
& Nbsp; * Ang halaga na ibinalik sa tumatawag
Narito ang isang listahan ng mga tawag na ginawa naming d ngayon:
& Nbsp; >>> mula pprint import pprint
& Nbsp; >>> pprint (d.calls)
& Nbsp; [('()', (), {},
& Nbsp; ('()', ('argumento',), {},
& Nbsp; ('()', (55,), {},
Maaari mong i-filter ang mga tawag sa pamamagitan ng pangalan, argumento, at mga argumento ng keyword:
& Nbsp; >>> pprint (d.calls ('()', 55))
& Nbsp; [('()', (55,), {},
Kung hindi mo pakialam tungkol sa halaga ng isang partikular na argumento, maaari mong gamitin ang halaga DontCare kapag pini-filter:
& Nbsp; >>> mula dingus-import DontCare
& Nbsp; >>> pprint (d.calls ('()', DontCare))
& Nbsp; [('()', ('argumento',), {},
& Nbsp; ('()', (55,), {},
Dinguses maaaring makagawa ng higit pa kaysa sa mayroon lamang mga katangian access at tatawagin. Suportahan sila maraming Python operator. Ang layunin ay upang payagan, at i-record, ang anumang mga pakikipag-ugnayan:
& Nbsp; >>> d = Dingus ('ugat')
& Nbsp; >>> (2 ** d.something) ['kumusta'] () / 100 * 'foo'
& Nbsp;
(Sana ang iyong real-world na mga pag-record dingus ay hindi mukhang ito!)
PATCHING
Dingus ay nagbibigay ng isang konteksto manager para sa patching bagay sa panahon ng pagsubok. Halimbawa:
& Nbsp; >>> mula dingus import patch
& Nbsp; >>> import urllib2
& Nbsp; >>> may patch ('urllib2.urlopen'):
& Nbsp; ... naka-print na urllib2.urlopen .__ class__
& Nbsp;
& Nbsp; >>>-print urllib2.urlopen .__ class__
& Nbsp; <-type ang 'function na'>
Maaari mo ring gamitin ito bilang isang dekorador sa iyong mga pamamaraan sa pagsubok:
& Nbsp; >>>patch ('urllib2.urlopen')
& Nbsp; ... def test_something (sa sarili):
& Nbsp; ... pass
& Nbsp; ...
mapanganib Magic
Dingus maaaring awtomatiko ring palitan globals isang module kapag tumatakbo ang mga pagsubok. Ito ay nagpapahintulot sa iyo na magsulat ng ganap na ihiwalay pagsusuri ng yunit. Tingnan ang mga halimbawa / urllib2 / test_urllib2.py para sa isang halimbawa. Ang may-akda ay hindi na Inirerekomenda ng tampok na ito, dahil maaari itong hinihikayat napaka malutong test. Dapat mong huwag mag ang sakit ng manu-manong mapanukso dependency; . ang sakit ay magsasabi sa iyo kapag ang isang klase collaborates na may masyadong maraming iba
Mga Kinakailangan :
- Python
Mga Komento hindi natagpuan