Kampprogram er et værktøj, der definerer en Python kontrakt for genbrugelig tilstand / support logik, primært til test af enheder. & Nbsp; Helper og tilpasning logik er inkluderet for at gøre det nemt at skrive dine egne installationer ved hjælp af inventar kontrakt. Lim kode er forudsat, der gør at bruge armaturer, der opfylder Udførelse kontrakt unittest kompatible prøvesager let og ligetil.
Hvorfor Udførelse
Standard Python unittest.py giver ingen oplagt metode til at gøre og genbruge stat nødvendig i en prøvesag andet end ved at tilføje en metode til test klasse. Det skalerer dårligt - komplekse hjælperfunktioner plantemateriale op en test klasse hierarki er et regelmæssigt mønster, når dette er gjort. Spottende mens et fantastisk værktøj ikke selv forhindre dette (og hjælpere at håne komplekse ting kan ophobes på samme måde, hvis placeret på test klasse).
Ved at definere en ensartet kontrakt, hvor hjælpere har ingen afhængighed af testen klasse vi tillader alle de regelmæssige kode hygiejne aktiviteter kan finde sted, uden at forvrænge indflydelse af at være i en klasse hierarki, der modellerer en helt anden ting - som er det, hjælpere på en testcase lider af.
Om Udførelse
Et armatur repræsenterer nogle tilstand. Hvert armatur har attributter på det, der er specifikke for armaturet. For eksempel kan et armatur, der repræsenterer en mappe, der kan bruges til midlertidige filer har en attribut "sti".
Oprettelse Udførelse
Minimalt, underklasse stativ, definere opsætningen til at initialisere din tilstand og planlægge en oprydning, når oprydning kaldes og du er færdig:
>>> Import unittest
>>> import- inventar
>>> Klasse NoddyFixture (fixtures.Fixture):
... Def setup (selv-):
... Super (NoddyFixture, self) .setUp ()
... Self.frobnozzle = 42
... Self.addCleanup (delattr, selvstændig, 'frobnozzle')
Dette vil initialisere frobnozzle når opsætningen er kaldes, og når oprydning kaldes slippe af med den frobnozzle attribut.
Der er en hjælper til at tilpasse en funktion eller funktion par i Udførelse. det sætter resultatet af funktionen i fn_result:
>>> Import os.path
>>> Import shutil
>>> Import tempfile
>>> Def setup_function ():
... Tilbage tempfile.mkdtemp ()
>>> Def teardown_function (stativ):
... Shutil.rmtree (armatur)
>>> Stativet = fixtures.FunctionFixture (setup_function, teardown_function)
>>> Fixture.setUp ()
>>> Print os.path.isdir (fixture.fn_result)
Sandt
>>> Fixture.cleanUp ()
armaturet API
Ovenstående eksempel introducerer nogle af armaturet API. For at være i stand til at rense op efter en fikstur er blevet anvendt, alle armaturer definerer en oprydning metode, der skal kaldes, når et armatur er færdig med.
Fordi dens rart at kunne bygge et bestemt sæt af relaterede inventar forud for at bruge dem, inventar har også definere en opsætning metode, som skal kaldes, før du prøver at bruge dem.
Et fælles ønske med inventar, der er dyre at lave, er at genbruge dem på mange testcases; at støtte denne base Fixture definerer også en reset som opfordrer self.cleanUp (); self.setUp (). Armaturer, der kan mere effektivt give sig genbruges skal tilsidesætte denne metode. Dette kan derefter anvendes med multiple test tilstand via ting som testresources, setUpClass eller setUpModule.
Når du bruger et stativ med en test kan du manuelt ringe Opsætningen og rengøringsmetoder. Mere praktisk er dog at bruge den medfølgende lim fra fixtures.TestWithFixtures som giver en MixIn definerer useFixture (kamel tilfælde, fordi unittest er kamel tilfældet i hele) metode. Den vil kalde setup på armaturet, så ring self.addCleanup (armatur) at planlægge en oprydning, og returnere armaturet. Dette lader en skrive:
>>> import- testtools
>>> Import unittest
Bemærk, at vi bruger testtools testcase her som vi har brug for at sikre en TestCase.addCleanup metode.
& Nbsp; >>> klasse NoddyTest (testtools.TestCase, fixtures.TestWithFixtures):
& Nbsp; ... def test_example (selv-):
& Nbsp; ... stativet = self.useFixture (NoddyFixture ())
& Nbsp; ... self.assertEqual (42, fixture.frobnozzle)
& Nbsp; >>> resultat = unittest.TestResult ()
& Nbsp;. >>> _ = NoddyTest (»test_example) køre (resultat)
& Nbsp; >>> udskrive result.wasSuccessful ()
& Nbsp; Sand
Udførelse gennemføre kontekst-protokollen, så du kan også bruge et stativ som en kontekst leder:
>>> Med fixtures.FunctionFixture (setup_function, teardown_function) som stativ:
... Print os.path.isdir (fixture.fn_result)
Sand
Krav :
- Python
Kommentarer ikke fundet