Python / Pytest - Импортировать модуль в файл независимо от того, где вы находитесь в каталоге? - PullRequest
0 голосов
/ 20 мая 2018

Я пытаюсь настроить pytest с моим проектом, и структура каталогов показана ниже.

├── 
├── README.md
├── my_code
│   ├── __init__.py
│   ├── __main__.py
│   └── target_file.py
└── tests
│   ├── __init__.py
│   └── test_one.py

В моем test_one.py я импортирую target_file.py с

import sys
import os
sys.path.insert(0, "my_code")

, если я запускаю pytest из командной строки в корневом каталоге, это работает.Тем не менее, если я cd в другой каталог, например в tests, я получаю сообщение о том, что модуль my_code не имеет атрибута bla bla bla.Я предполагаю, что это потому, что способ импортирования зависит от того, где я на самом деле нахожусь в каталоге.Поэтому, если я нахожусь в каталоге tests, он попытается импортировать из /root/tests/my_code, который не существует.Есть ли способ импортировать target_file.py в test_one.py, чтобы, где бы я ни находился, я мог перейти в командную строку и запустить pytest, чтобы мои тесты запускались?В настоящее время мне нужно перейти в корневой каталог, чтобы импорт работал правильно.

1 Ответ

0 голосов
/ 20 мая 2018

Добавьте полный путь вашего домашнего каталога проекта к sys.path, а не только относительный путь.Под Linux это начало из / в каталог, содержащий файл readme

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