Тест сначала создаёт клиента и проверяет 201 и client_id, затем повторяет запрос с тем же ИНН и ожидает 409. Данные должны быть заранее валидными и уникальными для тестового запуска.
Напиши Pytest-тест для API-эндпоинта POST /clients, который создает клиента.
Тест сначала создаёт клиента и проверяет 201 и client_id, затем повторяет запрос с тем же ИНН и ожидает 409. Данные должны быть заранее валидными и уникальными для тестового запуска.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Напиши Pytest-тест для API-эндпоинта POST /clients, который создает клиента.
Нужно проверить: статус-код 201, что в ответе присутствует client_id,
и что повторный запрос с тем же ИНН вернет 409 Conflict.
Ответ
Тест сначала создаёт клиента и проверяет 201 и client_id, затем повторяет запрос с тем же ИНН и ожидает 409. Данные должны быть заранее валидными и уникальными для тестового запуска.
def test_duplicate_inn(api_client, api_base_url, unique_client_payload):
payload = unique_client_payload
first = api_client.post(
f'{api_base_url}/clients', json=payload, timeout=10
)
assert first.status_code == 201
data = first.json()
assert 'client_id' in data
assert data['client_id'] is not None
second = api_client.post(
f'{api_base_url}/clients', json=payload, timeout=10
)
assert second.status_code == 409
Fixtures здесь проектные: клиент с нужной авторизацией, адрес изолированной среды и payload со всеми обязательными полями. Fixture данных должна организовать очистку по уникальному тестовому признаку, в том числе после падения. Формат ИНН и дополнительные поля нельзя выдумывать без контракта API.