2012-04-09 11 views
10

Sto provando ad entrare in testing in python usando il modulo doctest. Al momento lo faccioPython: è possibile testare solo funzioni specifiche con doctest in un modulo?

  1. Scrivere i test per le funzioni.
  2. implementare il codice delle funzioni.
  3. Se i test superano, scrivere più test e altro codice.
  4. Quando la funzione è terminata passare alla funzione successiva da implementare.

Quindi dopo 3 o 4 funzioni (indipendenti) nello stesso modulo con molti test ottengo un risultato enorme da doctest. Ed è un po 'fastidioso.

C'è un modo per dire doctest "non prova funzioni a(), b() e c()", in modo che venga eseguito solo i non marcate funzioni?

Ho trovato solo il flag doctest.SKIP, che non è sufficiente per le mie esigenze. Dovrei mettere questa bandiera in un sacco di righe. E se volessi controllare di nuovo una funzione contrassegnata con, dovrei passare manualmente il codice e rimuovere qualsiasi flag che ho impostato all'interno ...

Spero tu capisca cosa intendo ... :-)

Qualche suggerimento?

+0

Doctest non è male per alcuni test rapidi e sporchi, ma suggerirei vivamente di esaminare una libreria di test più avanzata. Il modulo costruito in 'unittest' di Python è in realtà molto buono. (http://docs.python.org/library/unittest.html) – Wilduck

+0

@Wildluck: So di pitoni 'unittest', grazie. Ma tutto ciò di cui ho bisogno ora è * test rapido e sporco *. :-) – Aufwind

risposta

13

looks like potreste passare la funzione di run_docstring_examples:

def f(a, b, c): 
    ''' 
    >>> f(1,2,3) 
    42 
    ''' 

if __name__ == '__main__': 
    import doctest 
# doctest.testmod() 
    doctest.run_docstring_examples(f, globals()) 

example trovato tramite google.

+1

non ha funzionato? –

+0

Ha funzionato, grazie. Ci scusiamo per aver risposto così tardi! Mi manca il summery di 'doctest.testmod (verbose = True)' dove ti dice qualcosa come * 18 passati e 0 falliti *, e così via. A parte questo, è un po 'quello che stavo cercando. :-) – Aufwind

+0

E che ne dici di fare questo da un repl e senza modificare il file sorgente? – Chris