Я знаю, как py.test обнаруживает тесты для запуска, но я не знаю, как заставить тесты ссылаться на файлы, содержащие код для тестирования.Как pytest находит файлы для проверки?
Мой проект выглядит следующим образом:
arith.py
tests/
test_airth.py
В моем проекте корневого каталога, у меня есть файл arith.py
с
def plus(x, y):
return x + y
В файле tests/test_arith.py
я имею
import arith
def test_plus():
assert arith.plus(3, 5) == 8
Когда Я запускаю в корневом каталоге проекта
pytest
Он обнаруживает мой тестовый файл, потому что я следовал правилам обнаружения испытаний. Но pytest отвечает
ImportError при импорте тест модуля тесты/test_arith.py»
Я выбежала pytest
от корня проекта, так почему это не нравится мой импорт? Он хочет найти файлы, которые я тестирую в каталоге tests
!
Как правильно настроить импорт, чтобы мои тестовые файлы в каталоге tests/
могли видеть файлы, находящиеся в тестировании, которые находятся в корневом каталоге проекта? (Примеры в документации pytest, похоже, не делают ничего особенного ... возможно, тесты находятся в том же каталоге, что и файлы под тестом? Они описывают обнаружение тестов очень подробно, но я, должно быть, пропустил, как настроить тесты, чтобы они можно увидеть код они тестирования)
Nice. Интересно, что я пытаюсь распространять один файл, который используют клиенты, просто говоря «import thething». Я создал большие многофайловые приложения, в которых 'pytest' часть, и да, каталог тестов был братом' main', 'models',' views' и, конечно, 'env'. Когда они упакованы таким образом, клиенты будут говорить «от моделей импортировать что угодно» или «импортировать модели». Чтобы получить то, что я хочу, я предполагаю, что мне нужно не просто иметь «thething.py», а вместо этого «thething /» братьев из «тестов» и поместить весь мой код в 'thething/__ init __. Py'. Это всего лишь пара сотен строк ... –
Если вы пытаетесь предоставить что-то, что хотите, чтобы люди импортировали, вы * определенно хотите создать пакет, даже если это всего лишь один файл. Вы все еще можете сделать это с помощью 'setup.py'. И если вы примете такой подход, вы можете иметь 'thething.py' и' tests/'в той же папке. –