# Анализатор графа зависимостей fixtures pytest и утечек mock.patch

Статически анализирует цепочку conftest.py: строит граф зависимостей фикстур по пяти областям видимости (function/class/module/package/session), находит перекрытия из более глубоких conftest и отмечает утечки состояния между тестами: mock.patch().start() без .stop(), monkeypatch в широких областях (функциональный откат никогда не выполняется) и with mock.patch, открытый через yield.

> Каноническая страница: https://elysiatools.com/ru/tools/pytest-conftest-fixture-dependency-graph-and-mock-patch-leak-detector

- **Категория:** Development

- **Ключевые слова:** pytest, conftest, фикстура, граф зависимостей, утечка mock.patch, monkeypatch, несоответствие областей, сессионная фикстура, загрязнение тестов, статический анализ, python-тесты, область фикстуры

## Обзор

Правила по официальной документации pytest: порядок областей session > package > module > class > function; зависимость широкой фикстуры от узкой даёт ScopeMismatch при коллекционировании; одноимённые фикстуры разрешаются от теста наружу — побеждает самый глубокий conftest. Детекция утечек: встроенные фикстуры (monkeypatch/capsys/tmp_path…) функциональные, их откат происходит только на этом уровне — использование в module/session-фикстурах оставляет патч активным на всю сессию (класс проблем pytest-mock issue #84); patcher.start() без .stop() живёт до конца процесса; with mock.patch через yield в широкой области заставляет все тесты видеть запатченную цель. Парсер — лёгкий Python-сканер (строки/тройные кавычки/комментарии обрабатываются корректно), без Python-runtime. Несколько файлов разделяйте маркерами «# --- file: tests/unit/conftest.py ---».

## Входные данные

- **Исходники Python (цепочка conftest)** (textarea): # --- file: conftest.py --- import pytest @pytest.fixture(scope="session") def db(): yield 1 …
- **Python-файл (опционально, .py/.txt)** (file)
- **Показывать встроенные фикстуры** (checkbox)

## Когда использовать

- При отладке плавающих ошибок (flaky tests) и взаимного влияния тестов из-за неочищенных моков.
- Перед рефакторингом многоуровневой структуры conftest.py в крупных проектах и монорепозиториях.
- Для поиска ошибок несовместимости областей видимости (ScopeMismatch) до запуска тестового набора.

## Как это работает

- Вставьте код файлов conftest.py с маркерами `# --- file: путь ---` или загрузите Python-файл.
- Статический парсер извлекает объявления фикстур, их скоупы (session, package, module, class, function) и используемые моки.
- Инструмент проверяет корректность teardown-логики и генерирует иерархический граф зависимостей с отчетом об ошибках.

## Сценарии использования

- Поиск утечек патчей unittest.mock и monkeypatch между изолированными тестами.
- Визуализация дерева зависимостей и переопределений фикстур во вложенных каталогах тестов.
- Предотвращение падений pytest на этапе сбора тестов (collection phase) из-за ScopeMismatch.

## Частые вопросы

### Требуется ли выполнение Python-кода для анализа?

Нет, инструмент использует статический анализ исходного текста и не выполняет код.

### Как указать несколько файлов conftest.py?

Разделите содержимое файлов строкой вида `# --- file: tests/unit/conftest.py ---`.

### В чем опасность использования monkeypatch в session-фикстурах?

monkeypatch работает в области function, поэтому в сессионных фикстурах откат изменений не происходит, загрязняя все последующие тесты.

### Что выявляет детекция ScopeMismatch?

Она находит случаи, когда фикстура с широким скоупом зависит от фикстуры с более узким скоупом.

### Как определяется утечка patcher.start()?

Анализатор фиксирует вызовы `.start()`, для которых отсутствует парный вызов `.stop()` в блоке финализации после `yield`.

## Связанные инструменты

- [Реконструктор критической мощности и W′bal для бега (Stryd)](https://elysiatools.com/ru/tools/stryd-running-power-critical-power-and-w-prime-bal-reconstructor): Определите CP и W′ по 3-минутному тесту, парам мощность–время или пробегам дистанция–время, затем повторите сессию Stryd (.fit/.tcx/CSV): W′bal по интегральной модели Скибы 2012 и дифференциальной модели Froncioni/Skiba/Clarke, прогноз до истощения, зоны Stryd и двухпанельный график.
- [Конструктор осей и экземпляров вариативных шрифтов и CSS font-variation-settings](https://elysiatools.com/ru/tools/variable-font-axis-instance-and-css-font-variation-settings-builder): Загрузите вариативный шрифт (TTF/OTF/WOFF/WOFF2), чтобы изучить оси fvar и именованные экземпляры, посмотреть интерполяцию прямо в браузере и получить готовый CSS font-variation-settings, эквивалентные высокоуровневые свойства и блок @font-face.
- [Визуализатор плана выполнения SQL](https://elysiatools.com/ru/tools/sql-explain-plan-visualizer): Вставьте вывод EXPLAIN / EXPLAIN ANALYZE (PostgreSQL/MySQL/SQLite) — строит дерево стоимости, отмечает расхождения оценочных и фактических строк и предлагает индексы
- [Инспектор бинарных заголовков Windows PE / Linux ELF / Mach-O (секции, импорт/экспорт)](https://elysiatools.com/ru/tools/windows-pe-linux-elf-mach-o-binary-header-section-import-export-inspector): Загрузите PE-COFF (.exe/.dll), ELF или Mach-O: разбор заголовков DOS/PE/COFF/optional, e_ident и таблиц ELF, заголовка и команд загрузки Mach-O; вывод — точка входа/база образа, таблица секций с отображением RVA↔смещение, импорт/экспорт, динамические символы и релокации, кросс-архитектурные аннотации (x86/x86-64/ARM/AArch64/RISC-V), значки ASLR/NX/PIE и hex-дамп начала файла.
- [Анализатор APNG: чанки IDAT/fdAT, повтор deflate и методы disposal с таймингом кадров](https://elysiatools.com/ru/tools/apng-idat-fdat-chunk-streaming-deflate-replay-and-disposal-method-analyzer): Загрузите PNG/APNG и разберите структуру анимации: подпись PNG и проверка CRC32 каждого чанка, IHDR (глубина/тип цвета/интерлейс), acTL (число кадров и повторов, обязан стоять до первого IDAT), fcTL (порядковый номер, ограничение области x+y+w+h ≤ холста, нормализация delay_num/delay_den, dispose_op none/background/previous, blend_op source/over), первый кадр IDAT + последующие через fdAT; общие номера fcTL+fdAT должны расти без пропусков с нуля; поток deflate каждого кадра воспроизводится с проверкой размера распаковки = высота × (1 + байтов на строку), повреждённый zlib фиксируется; симуляция disposal предупреждает о previous в первом кадре (трактуется как background), кадрах с нулевой задержкой и т. п.
- [Студия графиков CSV: гистограммы, диаграммы рассеяния и боксы](https://elysiatools.com/ru/tools/csv-histogram-scatter-box-plot-chart-studio): Загрузите или вставьте CSV и сразу постройте графики: гистограммы по правилам Стерджеса / Фридмана-Дьякониса / Скотта, рассеяние с r Пирсона и МНК-прямой, боксы Тьюки — каждый график скачивается в PNG и SVG.
- [Стеганография изображений: встраивание и обнаружение](https://elysiatools.com/ru/tools/image-steganography-embed-detect): Прячет текст в младшие биты PNG, извлекает обратно и выполняет стегоанализ по методу хи-квадрат Вестфельда–Пфицмана со скользящей кривой p и превью битового плана LSB.
- [Мост OCR PDF → структурированный JSON](https://elysiatools.com/ru/tools/ocr-pdf-to-structured-json-bridge): Извлекает текстовый слой PDF с геометрией (строки по y-координате, таблицы по промежуткам колонок, заголовки по кеглю, пары ключ-значение через двоеточие) и заполняет пользовательскую JSON-схему поле за полем — метки сопоставляются по нормализованным ключам, значения приводятся к объявленным типам и проверяются ajv.

## Примеры

- [MP3 Аудио Образцы Без Авторских Прав](https://elysiatools.com/ru/samples/mp3-samples): Коллекция аудио образцов без авторских прав для тестирования и разработки, включая звуки природы, медитативную музыку и фоновое аудио
- [Примеры Комментариев Кода](https://elysiatools.com/ru/samples/code-comment-samples): Примеры кода с различными стилями комментариев для тестирования удаления комментариев
- [Примеры QR-кодов](https://elysiatools.com/ru/samples/qrcode-samples): Примерные изображения QR-кодов для тестирования инструментов чтения и генерации QR-кодов
- [GitHub Actions Testing - CI/CD Интеграция](https://elysiatools.com/ru/samples/github-actions-testing): Всесторонние GitHub Actions тестовые workflow включая автоматизированные тесты, параллельное выполнение, тестовые отчеты, кэширование и продвинутые CI/CD паттерны для современных pipelines разработки
