Trey Hunner (Norsk)

Trey Hunner (Norsk)

jeg skrive en masse unit tester. Dessverre, min kode krever ofte monkey lapp for å være riktig enhet testet. Jeg bruker ofte patch funksjon fra Michael Foord er mock-biblioteket (nå tilgjengelig i Python 3.4 som unittest.mock) til monkey patch koden min.

Mens du chatter med andre brukere av patch, innså jeg at alle ser ut til å ha sin egen favoritt måte å bruke det. I dette innlegget vil jeg diskutere måter jeg bruker patch.,

Dekoratør

patch kan brukes som en metode dekoratør:

eller som en klasse dekoratør:

jeg bruker patch som dekoratør når jeg har en funksjon jeg ønsker oppdatert under hele testen. Jeg pleier ikke å bruke patch som en klasse dekoratør og jeg vil forklare hvorfor nedenfor.

Dekoratør eksempel

Kontekst Manager

patch kan brukes som en kontekst manager:

jeg foretrekker å bruke patch som en kontekst manager når jeg ønsker å lappe en funksjon for bare en del av en test. Jeg bruker ikke patch som en kontekst manager når jeg vil ha en oppdatert funksjon for hele testen.,

Kontekst manager eksempel

Manuelt ved å starte og stoppe

patch kan også brukes til å manuelt patch/unpatch ved hjelp av start og stop metoder:

jeg foretrekker å bruke patch ved hjelp av start/stopp-når jeg trenger en funksjon for å bli lappet for hver funksjon i en test klasse.

Dette er trolig den mest vanlige måten jeg bruker patch i mine tester. Jeg ofte gruppe mine tester i test klasser, der hver metode er fokusert rundt testing av den samme funksjonen. Derfor vil jeg som regel vil de samme funksjonene/objekter oppdatert for hver test metode.,

jeg nevnt at jeg foretrekker å ikke bruke klasse dekoratører for å løse dette problemet. I stedet, jeg foretrekker å bruke test klasse attributter for å lagre referanser til lappet funksjoner, i stedet for å akseptere patch argumenter på hver testmetode med dekoratører. Jeg finner dette mer TØRR.

Advarsel: En av de viktigste fordelene av dekoratør/kontekst manager former for oppdateringen, er at de klarer å rydde opp for deg. Når du ringer start for å sette din oppdateringen objekt, må du alltid huske å ringe stop for å rydde opp., Ellers vil du ha en ape oppdatert funksjon/objekt for resten av programmet som kjører.

starte og stoppe eksempel

Oppsummering

Patch kan brukes:

  1. som en metode eller klasse dekoratør
  2. som en kontekst manager
  3. ved hjelp av start og stopp metoder

jeg foretrekker min tester for å være lesbar, TØRR og lett å endre. Jeg har en tendens til å bruke start/stopp-metoder for at grunnen, men jeg bruker også ofte patch metode dekoratører og noen ganger bruker patch sammenheng ledere., Det er nyttig å kjenne til ulike smaker av patch fordi din favoritt smaken kan ikke alltid være mest egnet for problemet for hånden.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *