Fixtures è uno strumento che definisce un contratto Python per la logica dello stato / supporto riutilizzabile, principalmente per unità di test. & Nbsp; Helper e logica adattamento è incluso per rendere più facile per scrivere i propri apparecchi utilizzando il contratto di infissi. Codice colla è previsto che rende con apparecchi che rispettano il contratto Infissi in unittest casi di test compatibili facile e dritto in avanti.
Perché Calendario
Standard Python unittest.py fornisce alcun metodo per rendere evidente e lo stato necessario in un banco di prova diversa aggiungendo un metodo sulla classe di test riutilizzo. Questo scala male - funzioni di supporto complesse propogating una gerarchia di classi di test è un modello normale quando questo è fatto. Derisione mentre un grande strumento per sé non impedisce questo (e aiutanti per deridere cose complesse possono accumularsi nello stesso modo, se immessi sul classe di test).
Definendo un contratto uniforme dove aiutanti non hanno dipendenza dalla classe di test permettiamo tutte le attività di codice di igiene regolari avvengano senza l'influenza distorsioni di essere in una gerarchia di classi che si modella una cosa completamente diversa - che è ciò che aiutanti in un TestCase soffre di.
Informazioni su Calendario
Un apparecchio rappresenta uno stato. Ogni apparecchio ha attributi su di esso che sono specifici per l'apparecchio. Per esempio, un dispositivo che rappresenta una directory che può essere utilizzato per i file temporanei può avere un attributo 'percorso'.
Calendario Creazione
Minimamente, sottoclasse di fissaggio, definire setUp per inizializzare il vostro stato e programmare una pulizia quando pulizia è chiamato e il gioco è fatto:
>>> Import unittest
>>> infissi importazione
>>> NoddyFixture class (fixtures.Fixture):
... Def setUp (self):
... Super (NoddyFixture, auto) .setup ()
... Self.frobnozzle = 42
... Self.addCleanup (delattr, auto, 'frobnozzle')
Questo inizializza frobnozzle quando setUp viene chiamato, e quando pulizia è chiamato sbarazzarsi dell'attributo frobnozzle.
C'è un aiuto per l'adattamento di un paio di funzione o funzione nel Calendario. mette il risultato della funzione in fn_result:
>>> Os.path import
>>> Shutil import
>>> Tempfile import
>>> Def setup_function ():
... Tornare tempfile.mkdtemp ()
>>> Def teardown_function (fixture):
... Shutil.rmtree (fixture)
>>> Dispositivo = fixtures.FunctionFixture (setup_function, teardown_function)
>>> Fixture.setUp ()
>>> Print os.path.isdir (fixture.fn_result)
Vero
>>> Fixture.cleanUp ()
Il API Fixture
L'esempio precedente introduce alcune delle API Fixture. Per essere in grado di pulire dopo un apparecchio è stato usato, tutte le apparecchiature definiscono un metodo di pulitura che dovrebbe essere chiamata quando un dispositivo è finito con.
Perché è bello essere in grado di costruire un particolare insieme di apparecchi connessi in anticipo di loro utilizzo, infissi hanno anche definire un metodo di configurazione che dovrebbe essere chiamato prima di tentare di usarli.
Un desiderio comune con dispositivi che sono costosi per creare è quello di riutilizzarli in molti casi di test; a sostegno di questa Fixture base definisce anche un reset che chiama self.cleanUp (); self.setUp (). Calendario che possono più efficacemente rendersi riutilizzabili dovrebbe ignorare questo metodo. Questo può essere utilizzato con lo stato di prova multipla tramite cose come testresources, setUpClass o setUpModule.
Quando si utilizza un dispositivo con un test è possibile chiamare manualmente i metodi di impostazione e la pulizia. Più conveniente è se usare la colla in dotazione da fixtures.TestWithFixtures che fornisce un mixin definisce useFixture (caso cammello perché unittest è caso cammello tutto) metodo. Si chiamerà setUp sul dispositivo, chiamare self.addCleanup (fixture) per programmare una pulizia, e restituire il dispositivo. Ciò consente una scrittura:
>>> testtools importazione
>>> Import unittest
Si noti che usiamo testtools TestCase qui come abbiamo bisogno di garantire un metodo di TestCase.addCleanup.
& Nbsp; >>> classe NoddyTest (testtools.TestCase, fixtures.TestWithFixtures):
& Nbsp; ... def test_example (self):
& Nbsp; ... fixture = self.useFixture (NoddyFixture ())
& Nbsp; ... self.assertEqual (42, fixture.frobnozzle)
& Nbsp; >>> risultato = unittest.TestResult ()
& Nbsp;. >>> _ = NoddyTest ('test_example') eseguito (risultato)
& Nbsp; >>> stampare result.wasSuccessful ()
& Nbsp; La vera
Calendario implementano il protocollo contesto, in modo da poter anche utilizzare un dispositivo come un gestore di contesto:
>>> Con fixtures.FunctionFixture (setup_function, teardown_function) come dispositivo:
... Print os.path.isdir (fixture.fn_result)
Vero
Requisiti :
- Python
I commenti non trovato