Сгенерировать пользовательский интерфейс для ручного тестирования API из кода (альтернатива Postman)

Вопрос или проблема

Postman позволяет вам определять примеры использования вашего API, которые вы можете выполнять для ручного тестирования ваших конечных точек.

Мне кажется, что использовать медленный и загроможденный интерфейс для поддержания этих примеров в согласованности с моим кодом неудобно. Я бы предпочел кодировать эти примеры и проверять их в своей системе управления версиями. В идеале, какое-то программное обеспечение могло бы анализировать этот код и генерировать интерфейс (например, веб-интерфейс), который позволял бы мне вручную тестировать мои конечные точки с помощью примеров.

Я знаю о Swagger UI, но, похоже, мне нужно приобрести весь рабочий процесс Swagger и генерировать мои API из схем OpenAPI, чтобы использовать его. Интересно, есть ли альтернативы.

Вы можете писать тестовые скрипты на Python, для этого вам потребуется ряд библиотек:

  • requests – для отправки запросов

  • pydantic – для валидации модели данных

  • pytest и allure-pytest – для визуализации тестовых отчетов

Ответ или решение

Генерация пользовательского интерфейса для ручного тестирования API из кода (альтернатива Postman)

В современном мире разработки программного обеспечения тестирование API играет крайне важную роль. Многие разработчики используют Postman для ручного тестирования своих API, однако ограничения интерфейса и скорость его работы могут вызывать недовольство. Вместо того чтобы тратить время на взаимодействие с медленным и загроможденным графическим интерфейсом, многие предпочли бы использовать код, который легко поддерживать и синхронизировать с кодовой базой. В данной статье мы рассмотрим, как можно реализовать интерфейс для ручного тестирования API, используя Python и несколько полезных библиотек.

Выбор библиотек и инструментов

Для создания пользовательского интерфейса для тестирования API на Python вам потребуются несколько ключевых библиотек:

  1. Requests: Эта библиотека предназначена для отправки HTTP-запросов и работы с API. Она проста в использовании и дает возможность отправлять запросы различных типов (GET, POST, PUT, DELETE и т.д.).

    import requests
    
    response = requests.get('https://api.example.com/endpoint')
    print(response.json())
  2. Pydantic: Эта библиотека используется для валидации данных. С ее помощью вы можете создать модели для входящих и исходящих данных API, что значительно упрощает процесс тестирования.

    from pydantic import BaseModel
    
    class User(BaseModel):
       id: int
       name: str
       email: str
  3. Pytest и Allure: Эти библиотеки позволяют писать тесты и генерировать отчеты о тестировании. Pytest предлагает мощные инструменты для организации тестов, а Allure добавляет возможность визуализации результатов.

    pip install pytest allure-pytest

Создание кода для тестирования

Теперь мы можем приступить к созданию простого кода, который будет отправлять запросы к API и проверять результаты.

import requests
from pydantic import BaseModel
import pytest

class User(BaseModel):
    id: int
    name: str
    email: str

def test_get_user():
    response = requests.get('https://api.example.com/user/1')
    assert response.status_code == 200
    user = User(**response.json())
    assert user.name == 'John Doe'

Генерация веб-интерфейса

Главная задача заключается в том, чтобы сгенерировать удобный интерфейс для ручного тестирования, который позволит пользователям взаимодействовать с вашим кодом. В этом случае можно использовать такие фреймворки как Flask или FastAPI.

Пример реализации с использованием Flask

from flask import Flask, request, jsonify
import requests
from pydantic import BaseModel

app = Flask(__name__)

class User(BaseModel):
    id: int
    name: str
    email: str

@app.route('/test_user', methods=['POST'])
def test_user():
    user_id = request.json.get('user_id')
    response = requests.get(f'https://api.example.com/user/{user_id}')
    user = User(**response.json())
    return jsonify(user.dict()), response.status_code

if __name__ == '__main__':
    app.run(debug=True)

Запуская этот код, вы создадите простой веб-интерфейс для тестирования API, который позволит вам отправлять запросы и получать ответы в удобном формате.

Заключение

Использование Python и таких библиотек как Requests, Pydantic и Pytest предоставляет мощные инструменты для создания системы ручного тестирования API. Разработчики могут оставить графические интерфейсы позади и сосредоточиться на коде, который будет гибким и легко поддерживаемым. Кроме того, создание веб-интерфейса с использованием Flask позволяет сделать процесс тестирования более удобным и доступным.

С учетом вышеизложенного, вы можете легко генерировать пользовательский интерфейс для тестирования API, который удовлетворит ваши требования, не прибегая к сторонним решениям и ограничению функционала.

Оцените материал
Добавить комментарий

Капча загружается...