Trey Hunner (Čeština)

Trey Hunner (Čeština)

píšu spoustu jednotkových testů. Bohužel, můj kód často vyžaduje opičí záplatování, aby byl řádně testován. Já často používají patch funkce od Michaela Foord vysmívat knihovna (nyní k dispozici v Pythonu 3.4 jako unittest.mock), aby opičák opravil můj kód.

při chatování s ostatními uživateli patch jsem si uvědomil, že každý má svůj vlastní oblíbený způsob, jak jej použít. V tomto příspěvku budu diskutovat o způsobech, jak používám patch.,

Malíř

patch může být použit jako metoda malíř:

nebo jako třída malíř:

já používám náplast jako malíř, když mám funkci chci oprava během celého testu. Mám tendenci nepoužívat náplast jako třídní dekoratér a vysvětlím, proč níže.

dekorátor příklad

Správce kontextu

patch lze použít jako správce kontextu:

dávám přednost použití patch jako správce kontextu, když chci opravit funkci pouze pro část testu. Nepoužívám patch jako správce kontextu, když chci funkci opravenou pro celý test.,

Context manager příklad

Ručně pomocí start a stop

náplasti mohou být také použity ruční oprava/unpatch pomocí start stop metody:

já raději používat náplast pomocí start/stop, když potřebuju funkce, které mají být oprava pro každou funkci v testovací třídě.

toto je pravděpodobně nejběžnější způsob, jak používám patch v mých testech. Často seskupuji své testy do testovacích tříd, kde je každá metoda zaměřena na testování stejné funkce. Proto budu obvykle chtít stejné funkce/objekty opravené pro každou zkušební metodu.,

výše jsem poznamenal, že k vyřešení tohoto problému raději nepoužívám třídní dekoratéry. Místo toho raději používám atributy testovací třídy k ukládání odkazů na opravené funkce namísto přijímání argumentů opravy u každé zkušební metody s dekoratéry. Připadá mi to suchější.

varování: jednou z hlavních výhod dekoratér / context manager formy náplasti je, že zvládnout vyčistit pro vás. Kdykoli budete volat start nastavit vaše oprava objektu, vždy pamatujte na volání stop je vyčistit., V opačném případě budete mít opici opravenou funkci / objekt pro zbytek běžícího programu.

start a stop příklad

Shrnutí

Patch může být použit:

  1. jako metoda nebo třída malíř
  2. jako kontext manager
  3. pomocí tlačítek start a stop metody

mám raději testy, které mají být čitelné, SUCHÉ, a snadno změnit. Z tohoto důvodu mám tendenci používat metody start/stop, ale také často používám dekorátory metod patch a někdy používám Správce kontextu patch., Je užitečné znát různé příchutě patch, protože vaše oblíbená chuť nemusí být vždy nejvhodnější pro daný problém.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *