Lámpák olyan eszköz, amely meghatározza a Python szerződést újra felhasználható állapotba / támogatás logikát, elsősorban egység tesztelése. & Nbsp; Segítő és alkalmazkodás logikája szerepel, hogy könnyen írni a saját berendezési tárgyak segítségével a berendezési tárgyak szerződést. Glue kód van, ami a szerelvények, amelyek megfelelnek a világítótestek szerződés unittest kompatibilis teszt esetek egyszerűen és egyenesen előre.
Miért Lámpák
Normál Python unittest.py nem ad egyértelmű módszer hogy mind a többszöri állami szükségesek egy teszt eltérő módszerrel történő kiegészítésével a vizsgálati osztály. Ez a mérleg rosszul - komplex segítő funkciót propogating fel a vizsgálati osztály hierarchia szabályos alakzatban, amikor ez megtörtént. Gúnyos, miközben egy nagyszerű eszköz nem akadályozza ebben (és segítők gúnyolni összetett dolgokat is felhalmozódnak ugyanúgy, ha helyezni a vizsgálati osztály).
Meghatározásával egységes szerződést, ahol segítők nem függ a vizsgálati osztály már az engedélyt a rendszeres kódot higiéniai tevékenységek nélkül kerül sor, a torzító hatása, hogy egy osztály hierarchia, amely modellezi egy teljesen más dolog - ami mi segítők egy TestCase szenved.
A világítótestek
A lámpatest néhány állam. Minden szerelvénynek attribútumok rajta, amelyek kifejezetten a szerelvény. Például a lámpatest képviselő egy könyvtárat, amely lehet használni az ideiglenes fájlokat lehet, hogy egy attribútum "utat".
létrehozása Lámpák
Minimálisan, alosztály Fixture, meghatározzák setUp inicializálásokhoz állam és a menetrend razzia, amikor cleanUp hívják, és már kész is:
>>> Import unittest
>>> Import szerelvények
>>> Class NoddyFixture (fixtures.Fixture):
... Def setup (self):
... Super (NoddyFixture, self) .setUp ()
... Self.frobnozzle = 42
... Self.addCleanup (delattr, önálló, "frobnozzle)
Ennek hatására elindul frobnozzle kerülnek a telepítés hívják, és amikor cleanUp hívják megszabadulni a frobnozzle attribútum.
Van egy segítő alkalmazkodva a funkció vagy funkció-párt az világítótestek. helyezi a függvény eredménye a fn_result:
>>> Import os.path
>>> Import shutil
>>> Import átmeneti fájlt
>>> Def setup_function ():
... Vissza tempfile.mkdtemp ()
>>> Def teardown_function (készülék):
... Shutil.rmtree (lámpatest)
>>> Lámpatest = fixtures.FunctionFixture (setup_function, teardown_function)
>>> Fixture.setUp ()
>>> Print os.path.isdir (fixture.fn_result)
Igaz
>>> Fixture.cleanUp ()
A szerelvény API
A fenti példa bemutatja néhány, a Fixture API. Annak érdekében, hogy képes legyen megtisztítása után a lámpatest óta használják, minden hozzávaló határozza meg a cleanUp módszer, amely meg kell hívni, ha a lámpatest elkészült.
Mert szép ahhoz, hogy létrejöjjön egy adott sor kapcsolódó szerelvények előtt használja őket, berendezési tárgyak is meghatározzák a beállítási módszert amelynek a neve előtt akarják használni őket.
Egy közös vágya, a szerelvények, amelyek drágák, hogy hozzon létre, hogy újra őket sok teszt esetek; hogy támogassa ezt a bázist szerelvény is meghatározza a visszaállítás, amely felhívja self.cleanUp (); self.setUp (). Lámpák hogy hatékonyabban meg magukat többször előtérbe kell ezt a módszert. Ez alkalmas lehet több tesztet állam révén a dolgok, mint testresources, setUpClass, vagy setUpModule.
Amikor egy szerelvény a vizsgálati manuálisan is hívja a Setup és tisztítási módszerek. Kényelmesebb azonban az, hogy a mellékelt ragasztó fixtures.TestWithFixtures amely mixin meghatározó useFixture (camel esetben, mert unittest a teve esetben egész) módszerrel. Ez lesz a hívást felépíteni a fényvető, hívja self.addCleanup (lámpatest), hogy a menetrend razzia, és küldje vissza a szerelvény. Ez lehetővé teszi egy write:
>>> Import testtools
>>> Import unittest
Ne feledje, hogy az általunk használt testtools TestCase itt biztosítanunk kell a TestCase.addCleanup módszert.
& Nbsp; >>> class NoddyTest (testtools.TestCase, fixtures.TestWithFixtures):
& Nbsp; ... def test_example (self):
& Nbsp; ... lámpatest = self.useFixture (NoddyFixture ())
& Nbsp; ... self.assertEqual (42, fixture.frobnozzle)
& Nbsp; >>> result = unittest.TestResult ()
& Nbsp; >>> _ = NoddyTest ("test_example"). Futtatni (eredmény)
& Nbsp; >>> print result.wasSuccessful ()
& Nbsp; True
Lámpák végrehajtása keretében protokollt, így akkor is használja a lámpatest mint kontextus vezetője:
>>> A fixtures.FunctionFixture (setup_function, teardown_function) rögzítőelemként:
... Print os.path.isdir (fixture.fn_result)
Igaz
követelmények :
- Python
Hozzászólás nem található