Код-ревью Middle API-автотесты обновлено
Ревью: API-тест профиля
Вопрос
Найдите проблемы в API-тесте.
import requests
TOKEN = "eyJhbGciOiJIUzI1NiJ9.prod-admin-token"
def test_update_profile():
r = requests.put(
"https://api.shop.ru/v1/users/42",
json={"name": "Тест"},
headers={"Authorization": f"Bearer {TOKEN}"},
)
assert r.status_code in range(200, 300)
assert r.json() == {"id": 42, "name": "Тест", "updated_at": "2026-10-01T10:00:00Z"}
Коротко
Правильно: тестовое окружение из конфига, пользователь создаётся фабрикой, токен этого пользователя из фикстуры, клиент с таймаутом, точный статус, проверка полей с игнорированием времени (или проверка его формата), затем GET.
Что должен найти ревьюер
- Безопасностьстрока 3Токен в коде, да ещё боевой администраторский: утечка секрета, брать из переменных окружения CI
- Безопасностьстрока 7Боевой адрес API и захардкоженный id чужого пользователя: тест меняет реальные данные
- Стильстрока 6Запрос собирается в тесте руками, нет слоя клиента и таймаута запроса
- Ошибкастрока 11Любой 2xx вместо точного ожидаемого статуса
- Ошибкастрока 12Сравнение всего ответа вместе с updated_at, который меняется: тест всегда упадёт
- Стильстрока 12Нет проверки побочного эффекта: GET после PUT
Разбор
Правильно: тестовое окружение из конфига, пользователь создаётся фабрикой, токен этого пользователя из фикстуры, клиент с таймаутом, точный статус, проверка полей с игнорированием времени (или проверка его формата), затем GET.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.