Files
ayurishchevandClaude Opus 5.5 e1f197ccff Тесты по модулям предметных областей
Пункт 12 ревью 2026-09-28 17:35 (docs/changes/026): tests/test_app.py
(936 строк) разнесён на test_security, test_devices, test_operations,
test_backups, test_events, test_ids_migrations, test_architecture; общие
хелперы — tests/helpers.py. Тела тестов не менялись (AST совпадает).
security.reset_all_failures() — фикстура сбрасывает счётчики попыток по
всем ключам, тесты не зависят от порядка.

Тесты: 36 из 36 полным прогоном, каждый модуль отдельно и в обратном
порядке; тест-линтер после переноса проверен мутацией.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 21:30:23 +03:00

2.1 KiB

Итоги: 026 — тесты по модулям (п. 12 ревью)

Источник — ревью docs/reviews/2026-09-28-1735-codebase-review.md, п. 12.

Сделано

  • tests/test_app.py (936 строк, 36 тестов) разнесён по модулям без изменения тел тестов: test_security.py (10), test_devices.py (7), test_operations.py (5), test_backups.py (5), test_events.py (5), test_ids_migrations.py (3), test_architecture.py (1). Общие ros_client, _request — tests/helpers.py; каждый модуль импортирует только нужное (pyflakes чисто).
  • Изоляция: security.reset_all_failures() (очистка всех счётчиков неудачных попыток под блокировкой); фикстура env вызывает её вместо двух точечных сбросов — тесты с разными IP не влияют друг на друга при любом порядке. Приложение функцию не вызывает.
  • README: дерево tests/ в «Архитектуре», запуск одного модуля в «Тестах», строка 026.

Проверено

  • AST всех 36 тестовых функций (с декораторами) совпадает с tests/test_app.py из HEAD; имена тестов до и после совпадают.
  • pytest: 36 из 36 полным прогоном; каждый модуль отдельно — зелёный; модули в обратном порядке — 36 из 36.
  • Тест-линтер после переноса находит app/: мутация (прямой get_device в refresh_device) → падение с точным местом; файл восстановлен.
  • Стенд не пересобирался (тесты не входят в образ).

Оговорки

  • Ссылки на tests/test_app.py в прежних отчётах ревью (docs/reviews/*) оставлены как есть — это исторические документы.