doctest moduł szuka wszelkich docstrings w pliku i wykonuje żadnego kodu osadzonego w nim, więc tak, możliwe jest użycie doctest dla klas.
Co do tego, czy lepiej jest umieścić doctesty w klasie docstring lub konstruktorze, myślę, że to zależy od tego, co dokładnie dokumentujesz.
Jeśli docstring daje ogólny przegląd klasy i jak z niej korzystać, to myślę, że lepiej jest umieścić ją w klasie.
Jeśli w dokumencie docstring chodzi konkretnie o tworzenie instancji klasy, powinien on zostać wprowadzony w metodzie __init__
.
Pamiętaj, że celem testów jest przede wszystkim posiadanie własnego sprawdzającego przykładowego kodu w dokumentacji, dlatego IMHO aspekt dokumentacji powinien mieć pierwszeństwo przed aspektem testowania.
Edit:
W przykładzie powyżej nie ma kodu do wykonania doctest - prowadzenie python test.py -v
wykona główny kod Pythona, który właśnie definiuje klasę.
Trzeba dodać to do końca pliku:
if __name__ == "__main__":
import doctest
doctest.testmod()
Alternatywnie Jeśli używasz Pythona 2.6 lub później uruchomić go z:
python -m doctest -v test.py
Na marginesie, zawsze dziedziczą 'object' raczej niż nic tak że używasz * nowy klasy stylu *. –
Z wyjątkiem pythona 3, gdzie istnieją tylko klasy w nowym stylu, a obiekt 'object' jest domyślny bez zadeklarowanych rodziców. – Daenyth