t.me/atinfo_chat Telegram группа по автоматизации тестирования

Тесты из cmd не запускаются, а из PyCharm запускаются. А какое решение у вас?

Теги: #<Tag:0x00007fd771b59cf8> #<Tag:0x00007fd771b59b18> #<Tag:0x00007fd771b59960> #<Tag:0x00007fd771b59820> #<Tag:0x00007fd771b59758> #<Tag:0x00007fd771b59618>

Приветствую.
Когда то давно мучился проблемой. Тесты из 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).

Давно живу со своим решением, но мне кажется есть что-то более элегантное на этот счет…
А какое решение у вас?

У нас решение простое: научиться работать с импортами и пекеджами без дополнительных костылей, а когда все плохо - pkg_resources никто не отменял

поздравляю, вы изобрели относительные пути :rofl::rofl::rofl:

посмотрите любой проект разработки, там везде в конфижках относительные пути через …/…/ и вот это всё

Ну видимо так и не смог разобраться, хотя читал инфу про импорты. Помню, точно что была проблема. Нужно было решение быстрое тогда. Вот и сделал, потому что прописывать в sys.path как то не очень было. Ну буду пробовать без этого костыля и разбираться по ходу дела.