Приветствую.
Когда то давно мучился проблемой. Тесты из cmd не запускались (ошибка no module), а из PyCharm запускались. Что я только не делал тогда. Говорили, что нужно прописывать в PATH пути. Прописывал, но решение было не очень удобным. Тогда я думал как это исправить.
Пришел к такому решению:
Сделал функцию, которая возвращает путь до корневой папки проекта.
def get_project_path(path):
""" Функция возвращает путь до корневой папки проекта """
proj_name = 'project_directory_name'
while os.path.split(path)[1] != proj_name:
path = os.path.split(path)[0]
return path
Далее прописал в файле констант разные значения путей к разным папкам в проекте опираясь на данную функцию.
# Пути к директориям
PROJECT = get_project_path(os.getcwd()) # корневая папка проекта
TEST_DATA = os.path.join(PROJECT, 'test_data') # папка с тестовыми данными
Везде в тестах использую такую конструкцию
import helpers.const as const
class TestsAPI:
config = read_yaml(os.path.join(const.PROJECT, 'config.yaml'))
...
И теперь у меня никогда не возникает проблем с запуском тестов. Запускаю из любой папки, из IDE, из CMD - все всегда работает. Главная проблема при переходе на другой проект не забыть переименовать переменную proj_name в функции get_project_path(path).
Давно живу со своим решением, но мне кажется есть что-то более элегантное на этот счет…
А какое решение у вас?