Trey Hunner (Suomi)

Trey Hunner (Suomi)

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ää:

  1. menetelmänä tai luokan sisustusarkkitehti
  2. kuin tilanteessa, johtaja
  3. 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ä.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *