Предпосылки
Я родом из Lua языка сценариев, и я имел незначительное воздействие на язык программированияJava, который я использовал для изучения алгоритмов, четвёртый редактор (ref.).Python 3, например, API и тестирование
В Java, я привык видеть один класс для каждого файла с помощью метода main()
для тестирования и демонстрации правильного использования API класса.
Теперь я двигаюсь в направлении Python 3, который кажется мне смутным слиянием двух моих предыдущих миров.
Текущих настройки
Я начал разработку проекта: один главный сценария и набор папок, содержащих несколько классов (модулей Python «s). Каждый класс имеет, как я уже привык, свой собственный пример тестирования и использования, который запускает if __name__ == '__main__'
, i.e., если модуль запускается как сценарий (ref.).
Python 3 absolute import
заявление. Теперь я в беде. Для конкретного модуля может потребоваться доступ к функции от project_root.utilis
. В моей IDE (PyCharm) Я могу просто сделать from utils import blah
, но это bad, потому что он выглядит firsh среди моих установленных модулей, а затем в моем текущем проекте. Кроме того, если я запускаю свой модуль с терминала, он даже не работает. я в конечном итоге SYM-увязывания функции utils/blah.py
в некоторой подпапке ...
Теперь я знаю, что должно быть другое тестирование и документирование стандартов, но я хотел бы сохранить пример моих модулей внутри самого модуля, так что кто-то знает, как его использовать. И я считаю, что я не первый, кто использует такой рабочий процесс.
Вопрос
Может кто-нибудь объяснить мне, что это лучшая практика, чтобы документировать модуль с примерами испытаний, которые могут выполняться в том же файле?
Какова рекомендуемая альтернатива?
Позже результаты
Я просто понял, что в моем IDE, локальные модули имеют преимущество против установленных единиц (я считаю, что это не то, что должно произойти по умолчанию). Я не уверен, почему это происходит.
Чтобы запустить мои модули как скрипт, от project_root
я могу python -m module_dir.module_name
. По крайней мере, я могу удалить sym-ссылки.
Учитывая, что я за одним (или более) примером, который тестирует API и демонстрирует пользователю, как его использовать, я считаю, что * doctest *, который вы упомянули здесь, является наилучшим подходящим инструментом. Я прав? (Я также только что узнал о модификаторе '-m', чтобы временно развратить мою текущую настройку.) – Atcold
Doctest кажется подходящим для вашего варианта использования. –