Подготовка к авто-тестам

Содержание:

  1. Установка и настройка среды
  2. Настройка структуры проекта
  3. Краткий обзор используемых библиотек (просто, чтобы ознакомиться)
  4. Погружение в проект

Установка и настройка среды

Python и PyCharm мы уже устанавливали в 01.03 - Подготовка окружения — здесь дособираем окружение под автотесты.

1. Установка менеджера пакетов pip

Что такое pip?

Note

  • pip — это менеджер пакетов для Python. Он позволяет устанавливать и управлять библиотеками и зависимостями из репозитория PyPI.
  • Проверьте установку Python и pip:

    Откройте терминал или командную строку и введите:

    python --version
    pip --version

    Ожидаемый результат:

    Python 3.x.x
    pip x.x.x from ...

2. Создание виртуального окружения (Оно уже у вас должно быть создано)

Что такое виртуальное окружение?

Note

Виртуальное окружение в Python позволяет изолировать зависимости проекта. Это полезно, чтобы разные проекты не мешали друг другу, если они используют разные версии библиотек.

Шаги создания виртуального окружения:

Note

1️⃣

Создание виртуального окружения:

В терминале или командной строке перейдите в папку вашего проекта и выполните:

 
python -m venv venv
 
  • venv — название виртуального окружения. Его можно изменить на любое.

Note

2️⃣

Активация виртуального окружения:

  • Windows:

     
    venv\Scripts\activate
     
  • Linux/Mac:

     
    source venv/bin/activate
     

Note

3️⃣

Проверка активации: Активированное окружение отображается в скобках перед путём:

 
(venv) C:\project_folder>
 

Note

4️⃣

Деактивация виртуального окружения:

 
deactivate
 

3. Установка библиотек

Что такое библиотеки и зачем они нужны?

Note

Библиотеки Python — это готовый код, который можно использовать в своём проекте. Например:

  • requests — библиотека для отправки HTTP-запросов.
  • pytest-html — генерирует отчёты в формате HTML.
  • pytest-xdist — позволяет выполнять тесты параллельно для ускорения.
  • python-dotenv — позволяет работать с переменными окружения.
  • pytest — библиотека для написания и запуска тестов.

Шаги по установке:

Активируйте виртуальное окружение: Убедитесь, что ваше окружение активировано.

Note

1️⃣

Установите библиотеки через pip:

pip install pytest requests pytest-html pytest-xdist python-dotenv

Note

2️⃣

Проверьте установленные библиотеки: Выполните:

pip list

Ожидаемый результат:

Package        Version
pytest         x.x.x
requests       x.x.x
pytest-html    x.x.x
pytest-xdist   x.x.x
python-dotenv  x.x.x

Note

3️⃣

Создайте файл с зависимостями (requirements.txt): Чтобы сохранить список библиотек проекта, выполните:

pip freeze > requirements.txt

Note

4️⃣

Установка из requirements.txt: Для нового окружения или команды используйте:

pip install -r requirements.txt

4. Проверка работоспособности

  1. Создайте простой тест: В файле test_example.py напишите:

     
    import requests
     
    def test_google():
        response = requests.get("https://www.google.com")
        assert response.status_code == 200
     
  2. Запустите тест с pytest:

     
    pytest
     

Tip

Если всё работает правильно, вы увидите зелёный статус успешного выполнения теста.


Итоги:

Note

На этом этапе:

  • Python и pip установлены.
  • Создано и активировано виртуальное окружение.
  • Установлены библиотеки: pytest, requests, pytest-html, pytest-xdist, python-dotenv.
  • Библиотеки сохранены в requirements.txt.
  • Выполнен первый простой тест для проверки окружения.

Теперь вы готовы к следующему шагу — написанию автотестов! 🚀


Настройка структуры проекта

Настройка структуры проекта для автотестов на Pytest

Note

Организованная структура проекта позволяет писать тесты чисто, понятно и легко поддерживать. Давайте разберём основные шаги и элементы настройки:


1. Создание структуры папок

Структура автотестов обычно включает несколько основных папок:

 
project/

├── tests/          # Папка для тестов
   ├── test_api/   # Подпапка для API-тестов
   ├── test_ui/    # Подпапка для UI-тестов
   └── conftest.py # Файл с общими фикстурами

├── utils/          # Вспомогательные функции и модули
   └── helpers.py  # Утилиты для обработки данных, запросов и пр.

├── data/           # Тестовые данные
   ├── test_data.json  # JSON-файлы с тестовыми данными
   └── config.env     # Переменные окружения

├── pytest.ini      # Конфигурационный файл Pytest
├── requirements.txt # Список зависимостей
└── README.md       # Описание проекта
 

Примерно так:

Назначение папок:

  • tests: Здесь хранятся все тесты. Тесты можно группировать по типам (например, API, UI, интеграционные).
  • utils: Содержит вспомогательные функции (например, общие функции для отправки запросов или обработки ответов).
  • data: Хранит тестовые данные в разных форматах (JSON, CSV) и конфигурации (например, файлы .env с переменными окружения).
  • conftest.py: Файл для общих фикстур и настроек, которые будут использоваться в тестах.
  • pytest.ini: Основной файл конфигурации для Pytest, где можно настроить поведение запуска тестов.

2. Создание pytest.ini

Note

Файл pytest.ini используется для настройки параметров тестов и их запуска.

Основные параметры pytest.ini:

 
;[pytest]
;addopts = -v -s --html=report.html --tb=short  # Дополнительные опции запуска
;python_files = test_*.py                      # Шаблон файлов с тестами
;python_classes = Test*                        # Шаблон классов с тестами
;python_functions = test_*                     # Шаблон функций с тестами
;markers =
;    smoke: быстрые проверки
;    regression: регрессионные тесты
;    api: API-тесты
;    ui: UI-тесты
 

Warning

НО, ВНИМАНИЕ оставьте его пока пустым или закомментите (в будущем разберемся)


3. Запуск тестов

Note

Вы так же можете это делать через графический интерфейс

  • Запуск всех тестов:

    pytest
  • Генерация HTML-отчета:

    pytest --html=report.html

Краткий обзор используемых библиотек (просто, чтобы ознакомиться)

Зачем эти инструменты нужны AQA-инженеру — мы обсуждали в 01.01 - Введение в автоматизированное тестирование.

Обзор используемых библиотек:

Note

Для успешной работы с автотестами на Python для бекенда, мы будем использовать несколько ключевых библиотек. Каждая из них имеет своё назначение и помогает сделать код тестов чистым, читаемым и поддерживаемым.


1. requests — работа с HTTP-запросами

Назначение:

Note

Библиотека requests — это популярная и удобная библиотека для отправки HTTP-запросов и обработки ответов от серверов.

Основные возможности:

  • Отправка GET, POST, PUT, DELETE и других HTTP-запросов.
  • Обработка ответов сервера.
  • Работа с параметрами URL, заголовками и телом запроса.
  • Поддержка авторизации и сессий.

Пример использования:

import requests
 
# Отправляем GET-запрос
response = requests.get("https://jsonplaceholder.typicode.com/posts/1")
 
# Проверяем статус ответа
print("Статус-код:", response.status_code)
 
# Выводим тело ответа
print("Ответ:", response.json())

2. pytest — написание и запуск тестов

Назначение:

Note

pytest — это популярный фреймворк для тестирования на Python. Он позволяет писать простые и мощные тесты с минимальным количеством кода.

Основные возможности:

  • Автоматический поиск тестов по имени и папкам.
  • Поддержка фикстур для инициализации данных перед тестами.
  • Маркеры для группировки тестов (smoke, regression и др.).
  • Генерация подробных отчётов.
  • Простая интеграция с другими библиотеками и CI/CD.

Пример использования:

import pytest
import requests
 
# Фикстура для базового URL
@pytest.fixture
def base_url():
    return "https://jsonplaceholder.typicode.com"
 
# Тестовый метод
def test_get_post(base_url):
    response = requests.get(f"{base_url}/posts/1")
    assert response.status_code == 200
    assert response.json()["id"] == 1
 

Запуск тестов:

pytest test_example.py

3. python-dotenv — работа с переменными окружения

Назначение:

Note

Библиотека dotenv позволяет загружать переменные окружения из файла .env. Это полезно для хранения конфиденциальных данных, таких как API-ключи, пароли и настройки окружения.

Основные возможности:

  • Загрузка переменных окружения из файла .env.
  • Упрощение работы с конфигурацией для разных окружений (dev, test, prod).

Пример использования:

  1. Создайте файл .env:

    BASE_URL=https://jsonplaceholder.typicode.com
    API_KEY=your_api_key_here
    
    
  2. Использование в коде:

    from dotenv import load_dotenv
    import os
     
    # Загружаем переменные окружения
    load_dotenv()
     
    # Получаем переменные
    base_url = os.getenv("BASE_URL")
    api_key = os.getenv("API_KEY")
     
    print("Базовый URL:", base_url)
    print("API-ключ:", api_key)

Установка dotenv:

pip install python-dotenv

Итог:

БиблиотекаНазначениеПример использования
requestsОтправка HTTP-запросов и обработка ответовGET, POST, работа с параметрами
pytestНаписание и запуск тестов, поддержка фикстур и маркеровФикстуры, assert, отчёты
python-dotenvРабота с переменными окружения из файла .envAPI-ключи, базовые URL

Note

Эти библиотеки — основа для создания мощных автотестов на бекенд с использованием Python. 🚀



Далее: 04.02 - Основы Pytest ➡️ Модуль: 04 - MOC