Ответ
Тестирование GET-запросов фокусируется на корректности данных, параметрах запроса, кодах ответа и заголовках.
Основные аспекты проверки:
- Позитивные сценарии: Валидация структуры и данных ответа при корректных параметрах.
- Негативные сценарии: Проверка обработки невалидных или отсутствующих параметров, несуществующих ресурсов.
- Параметры запроса: Тестирование фильтрации, пагинации, сортировки через query-параметры.
- Заголовки (Headers): Проверка
Content-Type,Cache-Control, CORS-заголовков. - Производительность: Проверка времени ответа и соблюдения лимитов (rate limiting).
Пример теста на Python с библиотекой requests:
import requests
import pytest
def test_get_user_with_valid_id():
# GET-запрос с параметром
response = requests.get(
'https://api.example.com/users',
params={'id': 1, 'fields': 'name,email'}
)
# Проверки
assert response.status_code == 200
assert response.headers['Content-Type'] == 'application/json'
user_data = response.json()
assert user_data['id'] == 1
assert 'name' in user_data
assert 'email' in user_data
def test_get_user_with_invalid_id():
# Проверка обработки ошибки
response = requests.get('https://api.example.com/users', params={'id': 99999})
assert response.status_code == 404
Инструменты: Postman (для ручного тестирования и коллекций), curl для быстрых проверок, автотесты на Python/pytest для регрессии.
Ответ 18+ 🔞
А, ну вот, опять про эти ваши GET-запросы, блядь. Сидишь, значит, как дурак, и проверяешь, чтобы сервер не накосячил. А он, сука, всегда накосячит, ядрёна вошь! Ну ладно, давай по порядку, чтобы ты не пиздел потом, что не понял.
Тестирование этих самых GET-запросов — это не просто ткнуть и посмотреть. Это, блядь, целое искусство, где надо проверить всё: что он тебе отдаёт, как отдаёт и не послал ли он тебя нахуй по ошибке.
На что смотрим, как ястреб, блядь:
- Когда всё хорошо (позитив): Получил запрос — отдал правильные данные, структура не разъебалась, всё на месте. Красота.
- Когда всё пиздец (негатив): А вот это самое интересное! Подсовываешь ему левые параметры, несуществующий айдишник — и смотришь, не словил ли он ахуй и не отдал ли тебе вместо ошибки какую-нибудь хуйню. Или просто не лег лицом в клавиатуру.
- Параметры в запросе (query-params): Это когда ты ему говоришь: «Дай мне пользователей, но только на второй странице, отсортированных по имени, и покажи мне только десять штук». И смотришь, не перепутал ли он страницы и не отсортировал ли по размеру обуви, ебушки-воробушки.
- Заголовки (Headers): Ага, а тут проверяем, не врёт ли он нам. Сказал, что отдаёт JSON (
Content-Type: application/json), а сам тебе HTML-страничку с котиками подсунул. Или забыл сказать браузеру, что можно кэшировать ответ (Cache-Control). Или на CORS-заголовки забил болт, и фронтенд не может к нему достучаться. Пидарас шерстяной! - Скорость (Производительность): Тут просто: делаешь запрос и смотришь на часы. Если ответа ждёшь дольше, чем бабка в очереди за пенсией, — это пиздец. Или если он тебе больше N запросов в минуту не позволяет — тоже надо проверить, не начнёт ли он тебя посылать после десятого раза.
Вот, смотри, как это на Python с requests выглядит, чтоб ты не думал, что я пизжу:
import requests
import pytest
def test_get_user_with_valid_id():
# Нормальный, адекватный запрос за пользователем
response = requests.get(
'https://api.example.com/users',
params={'id': 1, 'fields': 'name,email'} # Просим конкретные поля, а не всю его подноготную
)
# А теперь начинается проверка, блядь
assert response.status_code == 200 # Во-первых, чтоб не 404 и не 500, а нормальный статус
assert response.headers['Content-Type'] == 'application/json' # Во-вторых, чтоб JSON, а не XML какой-нибудь
user_data = response.json() # Распарсили ответ
assert user_data['id'] == 1 # Айдишник тот же, что просили?
assert 'name' in user_data # Имя есть?
assert 'email' in user_data # Почта есть? Всё, чувак прошёл проверку.
def test_get_user_with_invalid_id():
# А теперь давай нахулим! Запросим пользователя, которого нет и не было
response = requests.get('https://api.example.com/users', params={'id': 99999})
# И что мы хотим увидеть? Правильно, ошибку 404 — «Не найдено, иди нахуй».
assert response.status_code == 404
Чем всё это дело делать?
Ручками — в Postman или просто curl в терминале дёргать, чтобы быстро понять, жив ли сервер вообще. А чтобы каждый раз не бегать и не проверять одно и то же — пишешь автотесты, как выше, на Python/pytest. Запустил раз — и спишь спокойно, пока какой-нибудь дебил не сломает продакшен, подозрение ебать чувствую.