testing-skill
Навык Pydantic AI предназначен для работы с VCR cassette — YAML-записями HTTP-взаимодействий, которые позволяют воспроизводимо запускать интеграционные тесты без повторного обращения к внешнему сервису. Его область применения уже, чем общий набор советов по тестированию: он описывает запись новых cassette, перезапись устаревших записей и разбор содержимого, когда тест падает из-за неожиданного запроса или ответа. Для начала исходный workflow предлагает проверить наличие файла .env; ключи и другие настройки не подставляются в саму cassette автоматически и должны быть доступны окружению в момент запуска теста. Основной сценарий использует uv run pytest и явный режим --record-mode=rewrite. Такой запуск можно направить на один тест или на несколько именованных тестов, что подходит для добавления записи или полного обновления выбранных HTTP-фикстур. Для обычной проверки после записи применяется тот же тест без --record-mode: cassette должна воспроизводиться в штатном режиме, а тест — завершаться с теми же проверками ответа. В документации отдельно показаны --lf для повторного запуска последнего упавшего теста, -vv для подробного вывода, --tb=line для короткого traceback и -k для фильтрации по выражению. Эти флаги помогают сузить диагностику, но не заменяют чтение самой фикстуры. Для просмотра YAML без ручного поиска предусмотрен parse_cassette.py. Скрипт принимает путь к cassette и необязательный --interaction N, где номер взаимодействия отсчитывается с нуля. При полном разборе он показывает для каждого взаимодействия HTTP-метод, URI и разобранное тело запроса, затем статус, тело ответа и другие ключевые поля. Длинные base64-значения сокращаются после 100 символов, поэтому такой вывод удобен для диагностики и не превращается в копию большого бинарного содержимого. Выбор конкретного interaction помогает сопоставить падение теста с одним запросом, а полный вывод — проверить порядок нескольких обращений. В workflow также учитываются проекты с inline-snapshot. Первый прогон без режима записи может автоматически заполнить snapshot-содержимое; затем его нужно просмотреть и сопоставить с ожидаемым результатом. Для ревью предлагается отделять изменения тестов от cassette и перечислять изменённые записи по именам, а нужную запись повторно открывать через parse_cassette.py. Практический результат навыка — воспроизводимая HTTP-фикстура и понятная причина расхождения, а не обещание, что любой внешний API будет доступен или что cassette безопасно обновлять без проверки ответа. Ограничения следуют из самого подхода: cassette хранит зафиксированный обмен и может устареть при изменении контракта сервиса, поэтому перезапись нужно ограничивать конкретными тестами и просматривать diff. API-ключи требуются в окружении и не должны переноситься в репозиторий вместе с фикстурами. Набор команд рассчитан на Python-проект с uv, pytest и соответствующей VCR-интеграцией; для другого стека сначала нужно подтвердить фактические команды проекта.
Для чего подходит
- Запись VCR cassette
- Перезапись устаревших HTTP-фикстур
- Отладка воспроизводимости интеграционных тестов
Установка
Сначала прочитайте SKILL.md и scripts в исходном репозитории. Затем выполните команду в каталоге проекта:
npx skills add https://github.com/pydantic/pydantic-ai/tree/main/.claude/skills/testing-skill