Trey Hunner (Magyar)

Trey Hunner (Magyar)

sok egységtesztet írok. Sajnos a kódom gyakran megköveteli, hogy a majom foltot megfelelően teszteljék. Gyakran használom a patch függvényt Michael Foord álkönyvtárából (már elérhető a Python 3.4-ben unittest néven.mock) a majom patch kódom.

apatch többi felhasználójával folytatott beszélgetés közben rájöttem, hogy mindenkinek megvan a saját kedvenc módja annak használatára. Ebben a bejegyzésben fogom megvitatni a módját használom patch.,

Decorator

patch lehet használni, mint egy módszer dekoratőr:

vagy egy osztály dekoratőr:

használom patch, mint egy dekoratőr, ha van egy funkció Szeretnék folt során az egész teszt. Én inkább nem használ patch, mint egy osztály lakberendező, majd elmagyarázom, hogy miért az alábbiakban.

Decorator példa

Context Manager

patch lehet használni, mint egy context manager:

inkább használni patch, mint egy kontextus menedzser, ha azt akarom, hogy patch egy függvény csak egy része a teszt. Nem használom a patch-et kontextuskezelőként, amikor egy teljes teszthez javított funkciót akarok.,

Context manager example

manuálisan start és stop

patch is használható manuálisan patch / unpatch segítségével start és stop módszerek:

inkább a javítás használata a start / stop, Ha szükségem van egy függvényt kell patched minden funkció egy teszt osztály.

Ez talán a leggyakoribb módja annak, hogy javítást használjak a tesztjeimben. Gyakran csoportosítom a tesztjeimet tesztosztályokba, ahol minden módszer ugyanazon funkció tesztelésére összpontosít. Ezért általában ugyanazokat a funkciókat / objektumokat szeretném minden tesztmódszerhez rögzíteni.,

fentebb megjegyeztem, hogy inkább nem használok osztály dekorátorokat a probléma megoldására. Ehelyett inkább a tesztosztály attribútumait használom a javított funkciókra való hivatkozások tárolására, ahelyett, hogy minden tesztmódszeren javító argumentumokat fogadnék el dekorátorokkal. Szárazabbnak találom.

figyelmeztetés: Az egyik elsődleges előnye a lakberendező / context manager formák patch, hogy kezelni tisztítsák meg az Ön számára. Amikor a start – ot hívja a patch objektum beállításához, mindig ne felejtse el felhívni a stop – t a tisztításhoz., Ellenkező esetben lesz egy majom folt funkció / objektum a többi futó program.

start and stop example

összefoglaló

Patch használható:

  1. módszerként vagy osztály dekorátorként
  2. kontextuskezelőként
  3. start and stop methods

inkább a tesztjeim olvashatóak, szárazak és könnyen módosíthatók. Ezért inkább a start / stop módszereket használom, de gyakran használom a patch method dekorátorokat is, néha pedig a patch context menedzsereket., Hasznos tudni a patch különböző ízeit, mert a kedvenc ízed nem mindig a legmegfelelőbb a szóban forgó problémára.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük