Kirjoitan paljon yksikkötestejä. Valitettavasti koodini vaatii usein apinan paikkausta, jotta se voidaan testata oikein. Olen usein käyttää patch
toiminto Michael Foord on pilkata kirjasto (nyt saatavilla Python 3.4 kuin unittest.mock) monkey patch my code.
Vaikka jutteleminen muiden käyttäjien kanssa patch
tajusin, että kaikilla tuntuu olevan oma suosikki tapa käyttää sitä. Tässä viestissä aion keskustella tavoista käytän patch.,
Sisustusarkkitehti
patch voidaan käyttää menetelmänä sisustaja:
tai luokan sisustaja:
en käytä laastari sisustaja kun olen toiminto, haluan paikattu aikana minun koko testi. En yleensä käytä Patchia luokan sisustajana ja selitän miksi alla.
Sisustusarkkitehti esimerkki
Context Manager
patch voidaan käyttää context manager:
olen mieluummin käyttää laastari, kuten konteksti manager, kun haluan patch toiminto vain osa testi. En käytä Patchia kontekstinhallintana, kun haluan, että toiminto paikataan kokonaista testiä varten.,
Context manager esimerkki
Manuaalisesti aloittaa ja pysäyttää
patch voidaan käyttää myös manuaalisesti patch/unpatch käyttäen start
ja stop
menetelmiä:
olen mieluummin käyttää laastari käyttämällä start/stop, kun tarvitsen toiminto paikattu jokainen toiminto testi-luokan.
Tämä on luultavasti yleisin tapa käyttää laastaria testeissäni. Ryhmittelen testini usein testiluokkiin, joissa jokainen menetelmä keskittyy saman toiminnon testaamiseen. Siksi haluan yleensä samat toiminnot/esineet paikataan jokaiselle testimenetelmälle.,
huomasin edellä, että en halua käyttää luokan sisustajia tämän ongelman ratkaisemiseksi. Sen sijaan, olen mieluummin käyttää testi-luokan attribuutit, jotta tallentaa viittaukset paikattu toiminnot sen sijaan hyväksyä patch argumentteja jokaisen testimenetelmän sisustussuunnittelijan kanssa. Tämä on kuivempaa.
Varoitus: Yksi tärkeimmistä eduista sisustusarkkitehti/context manager muotoja laastari on, että ne käsittelevät siivoamaan. Kun soitat start
setup patch esine, muista aina soittaa stop
puhdista se ylös., Muuten sinulla on apina paikattu toiminto / esine loput käynnissä ohjelma.
aloittaa ja lopettaa esimerkiksi
Yhteenveto
Patch voidaan käyttää:
- menetelmänä tai luokan sisustusarkkitehti
- kuin tilanteessa, johtaja
- käyttäen aloittaa ja lopettaa menetelmiä
olen mieluummin minun testeissä on luettavissa, KUIVA, ja helppo muokata. Käytän usein start/stop-menetelmiä tästä syystä, mutta käytän usein myös patch method decorators ja joskus käyttää patch context managers., Se on hyödyllistä tietää eri makuja patch
koska suosikki maku ei ole välttämättä aina sopivin yksi ongelma käsillä.