Python импортирует модули src при запуске тестов - PullRequest
32 голосов
/ 21 января 2011

Мои исходные файлы находятся под src, а мои тестовые файлы находятся под тестами.Когда я хочу запустить тестовый файл, скажем, python myTest.py, я получаю ошибку импорта: «Нет модуля с именем ASourceModule.py».

Как импортировать все модули из источника, необходимые для запуска моих тестов

Ответы [ 4 ]

28 голосов
/ 21 января 2011

Вам необходимо добавить этот каталог в путь:

import sys
sys.path.append('../src')

Возможно, поместите это в модуль, если вы часто его используете.

14 голосов
/ 25 октября 2012

Если вы не хотите добавлять исходный путь к каждому тестовому файлу или изменять свой PYTHONPATH, вы можете использовать nose для запуска тестов.

Предположим, что ваша структура каталогов выглядит следующим образом:

project
    package
        __init__.py
        module.py
    tests
        __init__.py
        test_module.py

Вы должны импортировать модуль обычно в test_module.py (например, from package import module). Затем запустите тесты, запустив nosetests в папке проекта. Вы также можете запустить определенные тесты, выполнив nosetests tests/test_module.py.

__init__.py в каталоге tests необходим, если вы хотите запустить тесты из него.

Вы можете легко установить нос с помощью easy_install или pip:

easy_install nose

или

pip install nose

нос расширяет unittest намного большим количеством способов, чтобы узнать больше об этом, вы можете проверить их веб-сайт: https://nose.readthedocs.org/en/latest/

8 голосов
/ 22 января 2016

В моей системе (Windows 10) я должен был сделать что-то вроде этого:

import sys
import os
sys.path.append(os.path.dirname(os.path.realpath(__file__)) + "/../src")

Добавление соответствующего каталога непосредственно к sys.path не сработало

0 голосов
/ 24 января 2011

Лучшее (наиболее управляемое) решение, по-видимому, использует virtualenv и setuptools / distribate для установки бесплатной копии пакета (src). Таким образом, ваши тесты выполняются на полностью «установленной» системе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...