Тесты
Тесты
Тесты нужны, чтобы гарантировать идемпотентность в enforce-режиме, поведение без enforce, а также поведение при конкурентных запросах.
Запуск
Обычно достаточно:
pytest -q
Более подробно:
python -m pytest -s -vv
С логами:
python -m pytest -vv -s --log-cli-level=INFO
Что проверяем
Минимальный набор сценариев:
enforce_nonce=trueи одинаковыйnonce-> возвращается один и тот жеid(dedupe).enforce_nonce=falseи одинаковыйnonce-> создаются разные сообщения.enforce_nonce=trueбезnonce-> ошибка валидации, 409 error (контракт).Конкурентные запросы с одинаковым
nonce-> максимум одна запись в БД в пределах TTL-окна.
Очистка после тестов
Для Postgres быстрее всего чистить таблицы через:
TRUNCATE ... RESTART IDENTITY CASCADE.
Для Redis лучше удалять ключи по шаблону через SCAN, а не KEYS, чтобы не блокировать сервер на больших наборах ключей.
Последнее обновление