Оптимальная организация файловой структуры модуля Python unittests?

К сожалению, я заметил, что существует слишком много способов сохранить ваш unittest в Python, и они обычно не хорошо документированы.

Я ищу «конечную» структуру, которая выполнит большинство из нижеперечисленных требований:

  • быть открытыми с помощью тестовых платформ, в том числе:
    • pytest
    • nosetests
    • tox
  • тесты должны быть вне файлов модулей и в другом каталоге, кроме самого модуля (обслуживание), вероятно, в каталоге tests/ на уровне пакета.
  • необходимо будет просто выполнить тестовый файл (тест должен быть в состоянии узнать, где находится модуль, который должен тестировать)

Просьба предоставить образец тестового файла, который выполняет поддельный тест, указать имя файла и каталог.

One Solution collect form web for “Оптимальная организация файловой структуры модуля Python unittests?”

Вот такой подход, который я использовал:

Структура каталога

 # All __init__.py files are empty in this example. app package_a __init__.py module_a.py package_b __init__.py module_b.py test __init__.py test_app.py __init__.py main.py 

main.py

 # This is the application's front-end. # # The import will succeed if Python can find the `app` package, which # will occur if the parent directory of app/ is in sys.path, either # because the user is running the script from within that parect directory # or because the user has included the parent directory in the PYTHONPATH # environment variable. from app.package_a.module_a import aaa print aaa(123, 456) 

module_a.py

 # We can import a sibling module like this. from app.package_b.module_b import bbb def aaa(s, t): return '{0} {1}'.format(s, bbb(t)) # We can also run module_a.py directly, using Python's -m option, which # allows you to run a module like a script. # # python -m app.package_a.module_a if __name__ == '__main__': print aaa(111, 222) print bbb(333) 

module_b.py

 def bbb(s): return s + 1 

test_app.py

 import unittest # From the point of view of testing code, our working modules # are siblings. Imports work accordingly, as seen in module_a. from app.package_a.module_a import aaa from app.package_a.module_a import bbb class TestApp(unittest.TestCase): def test_aaa(self): self.assertEqual(aaa(77, 88), '77 89') def test_bbb(self): self.assertEqual(bbb(99), 100) # Simiarly, we can run our test modules directly as scripts using the -m option, # or using nose. # # python -m app.test.test_app # nosetests app/test/test_app.py if __name__ == '__main__': unittest.main() 
  • Как я могу тестировать свою графическую программу с помощью Python и PyQt?
  • Почему ничто не находит ничего?
  • Установка Pytest для нескольких модулей
  • Проблема с модулем тестирования с assertRaises
  • Как сбить python unittest, если setUpClass выдает исключение
  • перейдите в интерактивный сеанс, чтобы проверить неудавшийся модульный тест
  • Как объединить per-env deps с файлом требований с Tox?
  • Как протестировать или издеваться над содержимым «if __name__ == '__main__»
  •  
    Interesting Posts for Van-Lav

    Почему __init__ не вызывается после __new__ SOMETIMES

    Многопоточность различных сценариев

    Заполнение отверстий в объектах, которые касаются границы изображения

    Можно ли распаковать кортеж без использования переменных?

    Что эквивалентно $ HOME в virtualenv (python) – специально для matplotlibrc

    Python устанавливает оператор «in»: использует равенство или идентификатор?

    Как записать файл или данные в объект S3 с помощью boto3

    Избегайте нежелательного текста из символического пакета Octave

    pandas dataframe форматирование строки (доступ к данному столбцу)

    Что такое «хорошая» палитра для расходящихся цветов в R? (или: можно ли вириди и магму объединить вместе?)

    Контролировать координаты мыши в режиме реального времени в Linux

    Выполнение скрипта Python с переменными PHP

    Как получить URL-адрес ImageField в шаблоне?

    Selenium, Get Elements By Xpath – Только захватить последние 60 элементов на странице

    Выполнить скрипт Python в ноутбуке Jupyter с помощью специального виртуального

    Python - лучший язык программирования в мире.