2016-09-14 3 views
1

Я пытаюсь выполнить модульные тесты проекта Python, используя py.test. До недавнего времени я использовал нос, и он запускал тесты против моего локального исходного кода вместо установленного пакета, но py.test, похоже, хочет работать против установленного пакета, то есть я должен запускать python setup.py install перед каждым тестовым прогоном.Есть ли стандартный способ сказать py.test для работы с определенным кодом?

Проект организован следующим образом:

/project 
    /project 
     __init__.py 
     project_file.py 
    /test 
     __init__.py 
     /test_project 
      test_project_file.py 

Единственный способ я нашел, чтобы получить py.test бежать против местного кода для запуска python -m pytest в папке верхнего/проекта. Это очень странно, поскольку работа py.test в том же месте выполняется против установленного кода. Согласно the docs эти команды должны быть эквивалентными, а -version возвращает ту же информацию для обоих.

Есть ли стандартный способ сказать py.test для запуска определенного кода? Я не смог найти ясный ответ в документации py.test.

ответ

1

Моя первая ошибка заключалась в создании моего проекта с использованием python setup.py install вместо python setup.py develop. Pytest ожидает, что вы воспользуетесь последним, что в любом случае кажется хорошей практикой.

Если необходимо использовать локальный код при установке того же кода, похоже, это способ сделать это. This SO post упоминает «скрытую функцию» pytest, где вы можете поместить файл conftest.py в корневой каталог, чтобы сообщить pytest для запуска с использованием вашего локального кода. Кажется, что Pytest использует местоположение вашего общего файла конфигурации, чтобы определить, что он думает о вашем корневом каталоге. Этот файл pytest.ini в моем случае.

В качестве любопытства я считаю, что python -m pytest работает с использованием локального кода, где py.test не было связано с поведением Python по умолчанию добавления каталога, к которому он вызвал, в sys.path.

+0

Документы Skylar обновлены, чтобы отразить это - https://docs.pytest.org/ru/latest/nose.html#unsupported-idioms-known-issues –