2012-04-09 10 views
10

Próbuję dostać się do testowania w Pythonie za pomocą modułu doctest. W tej chwili wykonujęPython: Czy możliwe jest testowanie tylko konkretnych funkcji za pomocą doctest w module?

  1. Napisz testy dla funkcji.
  2. zaimplementuj kod funkcji.
  3. Jeśli testy minęły, napisz więcej testów i więcej kodu.
  4. Po zakończeniu tej funkcji przejdź do następnej funkcji do wdrożenia.

Więc po 3 lub 4 (niezależne) funkcje w tym samym module z wieloma testami otrzymuję ogromne wyjście przez doctest. I to jest trochę denerwujące.

Czy istnieje sposób, aby powiedzieć doctest „nie przetestować funkcje a(), b() i c()”, tak, że działa tylko nieoznakowanych funkcje?

Znalazłem jedynie flagę doctest.SKIP, która nie jest wystarczająca dla moich potrzeb. Musiałbym umieścić tę flagę w wielu liniach. I jeśli chciałbym ponownie sprawdzić funkcję oznaczoną, musiałbym ręcznie przejść przez kod i usunąć flagę, którą ustawiłem wewnątrz ...

Mam nadzieję, że rozumiesz, co mam na myśli ... :-)

Wszelkie sugestie?

+0

Doctest nie jest zły na niektóre szybkie i brudne testy, ale zdecydowanie sugerowałbym przejrzenie bardziej zaawansowanej biblioteki testowej. Python zbudowany w module 'unittest' jest w rzeczywistości bardzo dobry. (http://docs.python.org/library/unittest.html) – Wilduck

+0

@Wildluck: Wiem o pythons 'unittest', thanks. Ale teraz potrzebuję tylko * szybkiego i brudnego testowania *. :-) – Aufwind

Odpowiedz

13

looks like można przekazać funkcję 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 znaleźć za pośrednictwem google.

+1

czy to nie zadziałało? –

+0

To zadziałało, dziękuję. Przepraszam za odpowiedź tak późno! Tęsknię za summery 'doctest.testmod (verbose = True)' gdzie mówi ci coś jak * 18 przeszedł i 0 nie powiodło się *, i takie. Poza tym jest to coś, czego szukałem. :-) – Aufwind

+0

A co z robieniem tego z repliki i bez modyfikowania pliku źródłowego? – Chris

Powiązane problemy