5.2.5 Uso avanzato

Sono disponibili diverse funzioni a livello di modulo per controllare il funzionamenteo dei doctest.

debug( module, name)
Esegue il debug di una singola docstring contenente il doctest.

Passate il module (o il nome del modulo in notazione puntata) contenete la docstring su cui eseguire il debug ed il name (all'interno del modulo) dell'oggetto con la docstring su cui eseguire il debug.

Gli esempi doctest vengono estratti (vedete la funzione testsource()), e scritti in un file temporaneo. Viene poi eseguito su quel file il debugger di Python, pdb. Nuovo nella versione 2.3.

testmod( )
Questa funzione fornisce l'interfaccia base sui doctest. Crea un'istanza locale della classe Tester, esegue i metodi appropriati di quella classe e combina i risultati nell'istanza globale Tester, master.

Per disporre di un controllo migliore di quanto non venga fornito da testmod(), è possibile creare un'istanza di Tester secondo politiche personalizzate, oppure si possono eseguire i metodi di master direttamente. Per i dettagli vedete Tester.__doc__.

testsource( module, name)
Estrae gli esempi doctest da una docstring.

Fornite il module (o il nome del modulo in notazione puntata) contenente i test da estrarre ed il name (all'interno del modulo) dell'oggetto con le docstring contenenti i test da estrarre.

Gli esempi doctest vengono restituiti come una stringa contenente codice Python. L'output previsto negli esempi viene convertito come commento Python. Nuovo nella versione 2.3.

DocTestSuite( [module])
Converte i test di doctest per un modulo in unittest.TestSuite.

La classe TestSuite restituita deve essere messa in esecuzione all'interno del framework unittest ed ha il compito di eseguire ogni doctest del modulo. Se uno dei doctest fallisce allora l'unità di test sintattica fallisce e viene sollevata un'eccezione DocTestTestFailure che mostra il nome del file contenente il test e (qualche volta in maniera approssimativa) il numero di riga.

L'argomento opzionale module specifica il modulo da testare. Può essere un oggetto modulo oppure il nome (possibilmente puntato) di un modulo. Se non specificato, viene utilizzato il modulo che chiama la funzione.

Esempio che mostra uno dei molti modi in cui il modulo unittest può usare TestSuite:

    import unittest
    import doctest
    import my_module_with_doctests

    suite = doctest.DocTestSuite(my_module_with_doctests)
    runner = unittest.TextTestRunner()
    runner.run(suite)

Nuovo nella versione 2.3. Questa funzione non cerca M.__test__ e le sue tecniche di ricerca non sono esattamente identiche a testmod() in ogni dettaglio. Le future versioni porteranno i due metodi a convergere.

Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.