Python: тесты носа с несколькими файлами

Это широкий вопрос, потому что никто, кажется, еще не нашел для него решения, поэтому я думаю, что просьба посмотреть рабочий пример может оказаться более полезным. Итак, вот и:

Кто-нибудь тестировал проект Python с использованием импорта нескольких файлов / пакетов?

Я имею в виду, есть ли у вас список каталогов, например:

project/
    |
    |____app/
          |___main.py
          |___2ndFile.py
          |___3rdFile.py
     |____tests/
          |____main_tests.py

Где ваш main.py импортирует несколько файлов, а вы выполняете тесты из файла проекта, используя тестовый скрипт в файле main_tests.py? Если да, то можете ли вы сделать снимок экрана в разделе импорта как всех ваших основных файлов, так и файла main_tests.py?

Похоже, это серьезная проблема при носовых тестах, без видимого решения:


person Jeeves    schedule 31.03.2016    source источник
comment
Это ваш второй вопрос по той же теме. Я задал вам два вопроса, которые вы не ответили на тот, который, скорее всего, мог быть причиной неудачи. Вернитесь к своему вопросу и еще раз просмотрите комментарии. Вы не должны задавать один и тот же вопрос дважды. Но это очень распространенная вещь, которая действительно работает.   -  person idjaw    schedule 31.03.2016
comment
Правда та же тема, другой подход.   -  person Jeeves    schedule 31.03.2016


Ответы (1)


  1. У вас не может быть модулей Python, начинающихся с цифры, поэтому 2ndFile.py, 3rdFile.py фактически не будут работать (переименуйте их).
  2. Вам понадобится __init__.py внутри каталога приложения, чтобы он считался пакетом, поэтому добавьте его (это может быть пустой файл).
  3. Вам не нужен __init__.py в каталоге тестов!
  4. Операторы импорта в main_tests.py должны выглядеть как from app.main import blah
  5. Абсолютный путь к каталогу project должен находиться в вашем sys.path. Для этого установите переменную среды: export PYTHONPATH=/path/to/project

Теперь бегущие тесты на нос должны сработать.

person wim    schedule 31.03.2016
comment
Привет, спасибо, я удалил init .py и добавил from app.main import blah, как было предложено, и повторил тесты носа - без ошибок. Однако, когда я запускаю python app.py сейчас, я получаю сообщение об ошибке, которое я получал при тестировании носа, ImportError: Нет модуля с именем ex48.2ndFile. - person Jeeves; 31.03.2016
comment
Прочтите еще раз пункт 1. У вас не может быть модуля с именем 2ndFile.py - person wim; 31.03.2016
comment
Имена файлов являются просто примерами - ни один из них в фактическом каталоге не начинается с цифр. Кроме того, где именно вы устанавливаете абсолютный путь к каталогу проекта, т.е. export PYTHONPATH = / path / to / project --- это внутри файла * .py или переменной окружения в самой системе? - person Jeeves; 31.03.2016
comment
Переменная среды в самой системе. Не пытайтесь установить его из Python. Он вам также понадобится для запуска вашего приложения. - person wim; 31.03.2016