PYTHONOMANIA
273 subscribers
195 photos
3 videos
1 file
616 links
Откройте для себя мир Python в PYTHONOMANIA!

Идеально подходит как для начинающих, так и для опытных разработчиков. Присоединяйтесь к нам, чтобы достичь совершенства в Python!

Сайт: https://pythonomania.github.io/
Download Telegram
📱Tia.

Tia -
это инструмент анализа влияния тестов (Test Impact Analysis) для pytest, который позволяет запускать только те тесты, на которые действительно повлияли ваши изменения в коде.

Зачем тратить драгоценное время CI-пайплайнов на прогон сотен тестов, которые физически не могли сломаться от вашей правки?

Tia
один раз собирает карту покрытия, а затем с помощью git diff вычисляет и запускает строго минимальный набор тестов. Эту же концепцию оптимизации используют внутри себя такие гиганты, как Google и Meta.

🔹Честность и точность на реальных данных:

Главный грех подобных утилит — случайно пропустить тест, который на самом деле должен был упасть. Разработчики tia подошли к вопросу жестко:

🔘Никаких красивых сказок: На связанных и плотных проектах (как Flask) утилита безопасно пропускает около 21% тестов. А вот на хорошо модулированных библиотеках (как boltons) реальный показатель пропуска достигает 96%!

🔘Умный фильтр «косметики»: Если коммит содержит только правку опечаток в комментариях, форматирование через black или добавление докстрингов, tia поймет через сравнение AST-деревьев, что рантайм-код не изменился, и пропустит 99%+ тестов.

🔘Игнорирование «мертвых» тайп-хинтов: Правки внутри блоков if TYPE_CHECKING: не запускают тесты зря. Но если вы измените тип поля в Pydantic или dataclass (что влияет на логику работы), утилита это честно отловит.

🛠Как это работает?

🔘tia record — запускает полную кодовую базу и строит карту на уровне конкретных методов и функций {тест -> {файл -> функции}}, сохраняя её в .tia/map.json. Благодаря системным аудит-хукам утилита запоминает даже не-Python файлы (фикстуры, шаблоны, конфиги), которые читал тест.

🔘tia run — анализирует текущий git diff, сопоставляет измененные строки с функциями и на основе 4 правил (попадание в функцию, изменение модуля, дата-зависимость и появление нового теста) отправляет в pytest только целевой набор.

🔻Готовность к CI и Облаку:

Карту тестов, собранную на базовой ветке, можно легко передавать в задачи пул-реквестов. tia поддерживает работу с удаленными хранилищами из коробки:

🔘Собственный легковесный HTTP-сервер (tia serve) без внешних зависимостей.

🔘Ленивая загрузка SDK для нативных облачных бакетов AWS S3 (s3://) и Google Cloud Storage (gs://).

🔘Автоматическая генерация красивых Markdown-отчетов для GitHub Actions ($GITHUB_STEP_SUMMARY) с детальной таблицей: что изменилось и почему были выбраны именно эти тесты.

🚀Быстрый старт:

pip install -e .

tia record # Строим карту (запуск из корня репозитория)
tia run # Запускаем только затронутые тесты
tia run --since main # Сравниваем изменения относительно ветки main


#Python #Pytest #Testing #QA #Automation #CI #CD #DevOps #Optimization #OpenSource

📱Ссылка на репозиторий:
https://github.com/breadMSA/pytest-tia
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥22👍1