/
YoungFreddy
/
NetologyStudy
Обзор
Документация
Войти
/
YoungFreddy
/
NetologyStudy
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
test_api.py
130 строк
7 KB
Igor
API realized
28 июн 2026, 10:57
28 июн 2026, 10:57
5ec1112
Код
Авторство
О чём код?
# Тестовый скрипт для проверки API FastAPI import httpx import asyncio import sys async def test_api(): """ Асинхронная функция для тестирования API. Возвращает True если все тесты прошли успешно, False иначе. """ # Базовый URL нашего приложения base_url = "http://localhost:8000" all_tests_passed = True try: async with httpx.AsyncClient(base_url=base_url) as client: # Тест 1: Создание задачи с минимальными данными print("=== Тест 1: Создание задачи с минимальными данными ===") task_data = { "title": "Тестовая задача 1", "priority": 3 } response = await client.post("/tasks", json=task_data) print(f"Статус: {response.status_code}") if response.status_code == 201: print("✓ ПАСС: Задача создана") print(f"Ответ: {response.json()}") task_id_1 = response.json()["id"] else: print("✗ ФАЙЛ: Ожидался статус 201, получил", response.status_code) print(f"Ответ: {response.json()}") all_tests_passed = False task_id_1 = None # Тест 2: Создание задачи со всеми данными print("\n=== Тест 2: Создание задачи со всеми данными ===") task_data = { "title": "Тестовая задача 2 с описанием", "description": "Это подробное описание задачи", "priority": 5 } response = await client.post("/tasks", json=task_data) print(f"Статус: {response.status_code}") if response.status_code == 201: print("✓ ПАСС: Задача создана") print(f"Ответ: {response.json()}") task_id_2 = response.json()["id"] else: print("✗ ФАЙЛ: Ожидался статус 201, получил", response.status_code) print(f"Ответ: {response.json()}") all_tests_passed = False task_id_2 = None # Тест 3: Получение существующей задачи if task_id_1: print(f"\n=== Тест 3: Получение задачи с ID {task_id_1} ===") response = await client.get(f"/tasks/{task_id_1}") print(f"Статус: {response.status_code}") if response.status_code == 200: print("✓ ПАСС: Задача найдена") print(f"Ответ: {response.json()}") else: print("✗ ФАЙЛ: Ожидался статус 200, получил", response.status_code) print(f"Ответ: {response.json()}") all_tests_passed = False # Тест 4: Попытка получения несуществующей задачи print(f"\n=== Тест 4: Получение несуществующей задачи (ID=999) ===") response = await client.get("/tasks/999") print(f"Статус: {response.status_code}") if response.status_code == 404: print("✓ ПАСС: Получен ожидаемый статус 404") print(f"Ответ: {response.json()}") else: print("✗ ФАЙЛ: Ожидался статус 404, получил", response.status_code) print(f"Ответ: {response.json()}") all_tests_passed = False # Тест 5: Валидация - попытка создать задачу с невалидным приоритетом print("\n=== Тест 5: Создание задачи с невалидным приоритетом (6) ===") task_data = { "title": "Невалидная задача", "priority": 6 } response = await client.post("/tasks", json=task_data) print(f"Статус: {response.status_code}") if response.status_code == 422: print("✓ ПАСС: Получен ожидаемый статус 422 (валидация не прошла)") print(f"Ответ: {response.json()}") else: print("✗ ФАЙЛ: Ожидался статус 422, получил", response.status_code) print(f"Ответ: {response.json()}") all_tests_passed = False # Тест 6: Валидация - попытка создать задачу с коротким названием print("\n=== Тест 6: Создание задачи с коротким названием (менее 3 символов) ===") task_data = { "title": "AB", "priority": 3 } response = await client.post("/tasks", json=task_data) print(f"Статус: {response.status_code}") if response.status_code == 422: print("✓ ПАСС: Получен ожидаемый статус 422 (валидация не прошла)") print(f"Ответ: {response.json()}") else: print("✗ ФАЙЛ: Ожидался статус 422, получил", response.status_code) print(f"Ответ: {response.json()}") all_tests_passed = False except httpx.RequestError as e: print(f"\n✗ Ошибка подключения к серверу: {e}") print("Убедитесь, что сервер запущен на http://localhost:8000") all_tests_passed = False # Итоговый результат print("\n" + "=" * 50) if all_tests_passed: print("✓ РЕЗУЛЬТАТ: ВСЕ ТЕСТЫ ПРОЙДЕНЫ УСПЕШНО") return True else: print("✗ РЕЗУЛЬТАТ: НЕКОТОРЫЕ ТЕСТЫ ПРОВАЛЕНЫ") return False # Запускаем тесты if __name__ == "__main__": success = asyncio.run(test_api()) sys.exit(0 if success else 1)