Подтвердить что ты не робот

Python импортирует модули src при выполнении тестов

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

Если вы не хотите добавлять исходный путь к каждому тестовому файлу или изменять свой 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/

Ответ 3

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

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

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

Ответ 4

Лучшее (наиболее управляемое) решение, похоже, использует virtualenv и setuptools/distribute для установки andebelopment-копии вашего пакета (src). Таким образом, ваши тесты выполняются с полностью "установленной" системой.