Структура проекта Python - qa-guru/knowledge-base GitHub Wiki
Данная структура проекта предназначена для автоматизации тестирования веб-приложений, мобильных приложений и API.
Ссылки на дипломные проекты с правильной структурой проекта:
https://github.com/Wildips/demoqa_diplome
https://github.com/Wildips/wiki_mobile_project
https://github.com/Wildips/qa_g-rest-api
https://github.com/div50015/diploma-project
https://github.com/o1ra/intertop/tree/main
https://github.com/o1ra/krisha
Ниже представлен пример структуры проекта, название папок и файлов могут отличаться в зависимости от проекта.
my-project-tests/ # корневой каталог проекта(название проекта)(пример litress-project-tests)
│
├── my_project_tests/ # основной каталог модулей(корневой пакет(название должно совпадать с названием проекта, только через подчеркивание))
│ ├── __init__.py # инициализация пакета
│ ├── utils/ # каталог для хелперов(утилит(для построения путей, аттачей и т.д.))
│ │ ├── __init__.py # инициализация пакета
│ │ ├── attach.py # файл с элементами attach(видео, скриншоты и т.д.)
│ │ ├── command.py # файл с командами для запуска тестов( к примеру мобильных(swipe, tap и т.д.))
│ │ └── paths.py # файл для путей к файлам
│ │
│ ├── test_data/ # каталог для тестовых данных
│ │ ├── __init__.py # инициализация пакета
│ │ └── data.py/ # файл с тестовыми данными для тестов
│ │
│ └── models/ # каталог для моделей
│ ├── __init__.py # инициализация пакета
│ ├── app.py # файл для реализации типа шаблона Application Manager для пейдж обжектов
│ └──pages/ # каталог для страниц
│ ├── __init__.py # инициализация пакета
│ ├── registration_page.py # код страницы 1
│ └── authorization_page.py # код страницы 2
или
│ ├── pages/ # каталог для страниц
│ │ ├── __init__.py # инициализация пакета
│ │ ├── ui/ # каталог для UI страниц
│ │ │ ├── __init__.py # инициализация пакета
│ │ │ ├── registration_page.py # код страницы 1
│ │ │ └── authorization_page.py # код страницы 2
│ │ │
│ │ └── mobile/ # каталог для мобильных страниц
│ │ ├── __init__.py # инициализация пакета
│ │ ├── registration_page.py # код страницы 1
│ │ └── authorization_page.py # код страницы 2
│ │
│ └──utils/ # каталог для утилит
│ ├── __init__.py # инициализация пакета
│ ├── requests_helper.py # файл с утилитами для запросов
│ └── sessions.py # файл с утилитами для сессий(BaseSession)
│
├── tests/ # каталог с тестами
│ ├── __init__.py # инициализация пакета
│ ├── api/ # тесты API
│ │ ├── __init__.py # инициализация пакета
│ │ ├── test.py # тесты на api
│ │ └── conftest.py # файл conftest для API тестов
│ │
│ ├── ui/ # тесты UI
│ │ ├── __init__.py # инициализация пакета
│ │ ├── test.py # тесты на UI
│ │ └── conftest.py # файл conftest для UI тестов
│ │
│ └── mobile/ # тести для мобилок
│ ├── __init__.py # инициализация пакета
│ ├── test.py # тесты на мобилки
│ └── conftest.py # файл conftest для мобилок
или
├── tests/ # каталог с тестами
│ ├── __init__.py # инициализация пакета
│ ├──conftest.py # файл conftest для всех тестов
│ ├── api/ # тести API
│ │ ├── __init__.py # инициализация пакета
│ │ └── test.py # тесты на api
│ │
│ ├── ui/ # тесты UI
│ │ ├── __init__.py # инициализация пакета
│ │ └── test.py # тесты на UI
│ │
│ └── mobile/ # тести для мобилок
│ ├── __init__.py # инициализация пакета
│ └── test.py # тесты на мобилки
│
├── config.py # файл с конфигурацией проекта(конфигурации в зависимости от окружения(env-прод, dev и т.д.))
│
├── resources/ # каталог для ресурсов
│ ├── images/ # каталог для изображений
│ │ └── foto.png
│ │
│ ├── videos/ # каталог для видео
│ │ └── video.mp4
│ │
│ └── files/ # каталог для файлов
│ └── file.txt
│
├── schemas/ # каталог для схем API
│ ├── schema1.json # схема API 1 (название должно отображать название схемы)
│ └── schema2.json # схема API 2 (название должно отображать название схемы)
или
├── schemas/ # каталог для схем API
│ ├── __init__.py # инициализация пакета
│ └── project.py # схемы voluptuous api для всего проекта api
│
│
├── docs/ # документация проекта
│
├── .gitignore # файл для игнорирования файлов/директорий в git
├── README.md # описание проекта
├──.env_prod # файл с переменными окружения для продакшн
├──.env_dev # файл с переменными окружения для дев
├── pytest.ini # файлик конфигурации pytest
├── requirements.txt # зависимости проекта
или
├── pyproject.toml/ # файл для управления зависимостями проекта
└── poetry.lock/ # файл для управления зависимостями проекта