Вопрос или проблема
Postman позволяет вам определять примеры использования вашего API, которые вы можете выполнять для ручного тестирования ваших конечных точек.
Мне кажется, что использовать медленный и загроможденный интерфейс для поддержания этих примеров в согласованности с моим кодом неудобно. Я бы предпочел кодировать эти примеры и проверять их в своей системе управления версиями. В идеале, какое-то программное обеспечение могло бы анализировать этот код и генерировать интерфейс (например, веб-интерфейс), который позволял бы мне вручную тестировать мои конечные точки с помощью примеров.
Я знаю о Swagger UI, но, похоже, мне нужно приобрести весь рабочий процесс Swagger и генерировать мои API из схем OpenAPI, чтобы использовать его. Интересно, есть ли альтернативы.
Вы можете писать тестовые скрипты на Python, для этого вам потребуется ряд библиотек:
-
requests – для отправки запросов
-
pydantic – для валидации модели данных
-
pytest и allure-pytest – для визуализации тестовых отчетов
Ответ или решение
Генерация пользовательского интерфейса для ручного тестирования API из кода (альтернатива Postman)
В современном мире разработки программного обеспечения тестирование API играет крайне важную роль. Многие разработчики используют Postman для ручного тестирования своих API, однако ограничения интерфейса и скорость его работы могут вызывать недовольство. Вместо того чтобы тратить время на взаимодействие с медленным и загроможденным графическим интерфейсом, многие предпочли бы использовать код, который легко поддерживать и синхронизировать с кодовой базой. В данной статье мы рассмотрим, как можно реализовать интерфейс для ручного тестирования API, используя Python и несколько полезных библиотек.
Выбор библиотек и инструментов
Для создания пользовательского интерфейса для тестирования API на Python вам потребуются несколько ключевых библиотек:
-
Requests: Эта библиотека предназначена для отправки HTTP-запросов и работы с API. Она проста в использовании и дает возможность отправлять запросы различных типов (GET, POST, PUT, DELETE и т.д.).
import requests response = requests.get('https://api.example.com/endpoint') print(response.json())
-
Pydantic: Эта библиотека используется для валидации данных. С ее помощью вы можете создать модели для входящих и исходящих данных API, что значительно упрощает процесс тестирования.
from pydantic import BaseModel class User(BaseModel): id: int name: str email: str
-
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, который удовлетворит ваши требования, не прибегая к сторонним решениям и ограничению функционала.