Действительно ли возможно использовать doctest понятие Python для классов, не просто функционирует?
Если так, куда я помещу doctests - в docstring класса, или в docstring конструктора?
Для разъяснения я ищу что-то как:
class Test:
"""
>>> a=Test(5)
>>> a.multiply_by_2()
10
"""
def __init__(self, number):
self._number=number
def multiply_by_2(self):
return self._number*2
Заранее спасибо,
Adam
Вам не хватает кода для фактического запуска тестов в нижней части файла:
class Test:
<snip>
if __name__ == "__main__":
import doctest
doctest.testmod()
Что касается того, где разместить тесты:
Модуль doctest ищет любые строки документации в файле и выполняет любой встроенный в него код, так что да, можно использовать doctest для классов.
Что касается того, что лучше поместить тестовые документы в строку документации класса или в конструктор, я думаю, это зависит от того, что именно вы документируете.
Если строка документации дает общий обзор класса и того, как его использовать, я думаю, что лучше поместить ее в класс.
Если в строке документации указано, как создавать экземпляры класса, ее следует поместить в метод __ init __
.
Помните, что целью doctests является, прежде всего, наличие в документации примеров кода с самопроверкой, поэтому, IMHO, аспект документации должен иметь приоритет над аспектом тестирования.
Изменить:
В вашем примере выше нет кода для выполнения doctest - запуск python test.py -v
выполнит основной код Python, который просто определяет класс.
Вам нужно добавить это в конец файла:
if __name__ == "__main__":
import doctest
doctest.testmod()
В качестве альтернативы, если вы используете Python 2.6 или новее, запустите его с:
python -m doctest -v test.py