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

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

Сайт: https://pythonomania.github.io/
Download Telegram
📱Временное отключение отдельных тестов в Pytest.

Существуют стандартные способы временно отключать отдельные тесты, например, с помощью декоратора pytest.mark.skip. Этот плагин добавляет новый способ сделать это, расширяя стандартные функции pytest. Теперь вы можете поместить имена отключенных тестов в отдельный файл, а затем корректировать и дополнять их, не заходя в исходный код тестов.

А вы знаете, что такое pytest? Используете ли его в своих проектах? Задавайте вопросы или поделитесь своим опытом в комментариях! 💬

📱Ссылка на репозиторий:
https://github.com/pomponchik/antitesting

#Python #Pytest #Тестирование #Программирование #Советы
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍1
📱Pytest-order.

✅Плагин pytest-order для pytest позволяет настраивать порядок выполнения тестов. Он использует маркер order, который определяет, когда именно должен запускаться тест — либо с помощью порядкового номера, либо задавая отношение к другим тестам.

❗️Плагин поддерживает Python 3.7 - 3.12 и pytest версий >= 5.0.0 (для Python 3.9 и ниже) и pytest >= 6.2.4 (для Python 3.10 и выше). Работает на Linux, macOS и Windows.

📌Основные функции:

📍Упорядочивание тестов по индексу.

📍Упорядочивание с начала и с конца (через отрицательный индекс).

📍Упорядочивание относительно других тестов (через атрибуты маркера before и after).

📍Упорядочивание сессий, модулей и классов через опцию order-scope.

📍Упорядочивание на уровне директорий через опцию order-scope-level.

📍Иерархическое упорядочивание модулей и классов через опцию order-group-scope.

📍Упорядочивание тестов с использованием маркеров pytest-dependency (опция order-dependencies).

📍Разреженное упорядочивание тестов через опцию sparse-ordering.

📍Использование кастомных маркеров для упорядочивания с помощью опции order-marker-prefix.

#pytest #python #unittest #testing #devtools #pytest_order #automation #qa #ordering #order

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

Pylint-pytest — удобный плагин для подавления ложных срабатываний Pylint, связанных с pytest. Позволяет избежать предупреждений, таких как неиспользуемые аргументы в фикстурах, повторное определение имен и многое другое.

#Pylint #Pytest #Python #CodeQuality #Automation

📱Ссылка на репозиторий:
https://github.com/pylint-dev/pylint-pytest
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍4
📱Сookiecutter-uv.

cookiecutter-uv - это шаблон, который можно использовать для инициализации Python проекта с необходимыми инструментами для разработки, тестирования и деплоя.

🗯Поддерживаются следующие функции:

🔘Управление зависимостями с помощью uv.

🔘CI/CD с GitHub Actions.

🔘Pre-commit хуки.

🔘Контроль качества кода с помощью ruff, mypy, deptry и prettier.

🔘Публикация на PyPI при создании нового релиза на GitHub.

🔘Тестирование и покрытие с использованием pytest и codecov.

🔘Документация с MkDocs.

🔘Тестирование совместимости для нескольких версий Python с tox-uv.

🔘Контейнеризация с Docker.

🔘Среда разработки с VSCode devcontainers.

#Python #Cookiecutter #GitHubActions #PreCommit #Ruff #Mypy #Pytest #Docker #MkDocs #VSCode #ToxUV #PyPI

📱Ссылка на репозиторий:
https://github.com/fpgmaas/cookiecutter-uv
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍3
📱Pytest-metadata.

pytest-metadata — плагин для pytest, который упрощает работу с метаданными тестовой сессии.

🔹Ключевые возможности:

🔘Автоматический сбор метаданных: Плагин собирает информацию о версии Python, платформе, а также установленных пакетах и плагинах.

🔘Поддержка дополнительных метаданных: Легко добавляйте свои метаданные с помощью аргументов --metadata или загружайте данные из JSON.

🔘Интеграция с CI/CD: pytest-metadata поддерживает CI-платформы (GitLab CI, Jenkins, Travis CI и др.), автоматически добавляя переменные окружения к метаданным тестов.

🔘Просмотр метаданных в отчете: Добавьте флаг --verbose для вывода собранных метаданных в заголовке терминального отчета.

🔘Работа с JUnit XML: Включите метаданные в JUnit XML отчет с помощью фикстуры include_metadata_in_junit_xml для улучшенной отчетности.

🔘Настройка метаданных через хуки: Легко добавляйте, изменяйте или удаляйте метаданные после их сбора с помощью хука pytest_metadata.

#pytest #pytest_plugins #Python #testautomation #devtools

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

IntentGuard — это библиотека Python для проверки свойств кода с помощью утверждений на естественном языке. Она интегрируется с pytest и unittest, позволяя формулировать сложные ожидания к коду без лишнего шаблонного кода.

❓Зачем использовать IntentGuard?

🔘Проверка сложных свойств кода без громоздких тестов.

🔘Минимизация шаблонного кода.

🔘Улучшенная читаемость тестов.

🔹Ключевые возможности:

🔘Естественные утверждения – пишите проверки на обычном английском.

🔘Интеграция с pytest и unittest.

🔘Детерминированные результаты – механизм голосования и контролируемого сэмплирования.

🔘Гибкая верификация – подходит для сложных свойств.

🔘Подробные объяснения ошибок – понятные отчёты при сбоях тестов.

🔘Эффективное кэширование – ускоряет выполнение тестов.

#Python #Testing #IntentGuard #pytest #unittest #AI #NaturalLanguage

📱Ссылка на репозиторий:
https://github.com/kdunee/intentguard
Please open Telegram to view this post
VIEW IN TELEGRAM
2🔥3👍1
📱Coredumpy.

coredumpy — это легковесная библиотека и инструмент для пост-мортем отладки Python-программ, которая сохраняет дамп состояния приложения при возникновении ошибок, исключений или падений тестов.

❓Что делает coredumpy?

Сохраняет всё окружение в момент сбоя — стек вызовов, переменные, объекты и даже данные из многопоточных контекстов — в безопасный и читаемый JSON-файл. Позволяет потом «воспроизвести» это состояние в отладчике (pdb, ipdb, VSCode и др.).

🛠Ключевые особенности:

🔘Поддержка pytest, unittest, runtime исключений.

🔘Совместимость с VSCode, pdb, ipdb.

🔘Безопасное скрытие секретов (API ключи, переменные окружения).

🔘Без зависимостей.

🔘Настраиваемое поведение и поддержка собственных типов.

🔻Полезно при:

🔘Сложных падениях, которые трудно отловить в моменте.

🔘Отладке CI-сборок и автоматизированных тестов.

🔘Анализе ошибок на проде, если есть дампы.

#Python #Debugging #CrashDump #PostMortem #coredumpy #DevTools #pytest #unittest #VSCode #PythonTools #ErrorTracking #OpenSource #PythonDev

📱Ссылка на репозиторий:
https://github.com/gaogaotiantian/coredumpy
Please open Telegram to view this post
VIEW IN TELEGRAM
1👎3🔥3👍1
📱Plain.

Plain — веб-фреймворк на Python, созданный для продуктовых команд: минимализм, читаемость, гибкость.

🔹Из коробки:

🔘URL → View.
🔘HTTP-обработка.
🔘Jinja-шаблоны.
🔘Формы и CLI.
🔘Middleware.
🔘Работа со static.
🔘Интеграции с пакетами Plain и сторонними библиотеками.
🔘Preflight-проверки.

#Python #WebFramework #PlainFramework #HTMX #TailwindCSS #MinimalPython #FullStackPython #WebDev #Backend #Frontend #OpenSource #ORM #Middleware #Jinja2 #Pytest #OAuth #ProductivityTools #PythonWebDev

📱Ссылка на репозиторий:
https://github.com/dropseed/plain
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍2🔥2
📱Patito.

Patito — это Python-библиотека, которая объединяет возможности Pydantic и Polars для удобной, строгой и типизированной работы с датафреймами.

Хочешь валидировать датафреймы так же удобно, как Pydantic-модели? Patito позволяет описывать схему данных с помощью аннотаций типов, генерировать валидные тестовые данные и легко превращать строки таблицы в полноценные Python-объекты.

🔹Возможности:

🔘Валидация датафреймов с понятными ошибками.

🔘Генерация mock-данных для тестов.

🔘Преобразование строк в классы с методами.

🔘Автоматическое заполнение полей по выражениям (derive).

#python #patito #pydantic #polars #датасайенс #типизация #валидация #pytest #данные #тестирование

📱Ссылка на репозиторий:
https://github.com/JakobGM/patito
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍2🔥1🤔1
📱Pytest-testmon.

pytest-testmon — плагин для Pytest, который повторно запускает только тесты, затронутые последними изменениями в коде.

❓Как это работает в динамическом языке, как Python?

✅Плагин анализирует покрытие тестов, отслеживает зависимости, и сохраняет информацию в .testmondata. При следующем запуске он сравнивает изменения и запускает только нужные тесты. Это похоже на магию — но работает!

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

🔘pip install pytest-testmon.

🔘pytest --testmon # Первый прогон — строим базу зависимостей.

🔘# Вносим изменения в код.

🔘pytest --testmon # Второй прогон — запускаются только затронутые тесты.

#Python #pytest #testmon #CI #unittesting #DevTools #TestOptimization #SoftwareTesting #Automation #OpenSource

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

Code Spy — это инструмент для Python-разработчиков, который следит за изменениями в вашем проекте и автоматически запускает нужные проверки и задачи.

Представьте: вы сохраняете файл — а Code Spy сам запускает MyPy, Pylint, Pytest, Black или даже перезапускает dev-сервер. Вам не нужно переключаться в терминал, вручную запускать команды или следить, что что-то забыли проверить. Всё происходит автоматически.

❓Что умеет Code Spy:

🔘MyPy — проверка типов.

🔘Black — автоформатирование.

🔘Pylint — линтинг.

🔘Pytest — тесты.

🔘DevServer — перезапуск приложения (например, Flask).

🔻Дополнительные задачи (при установке соответствующих библиотек):

🔘ISort.

🔘Flake8.

🔘Bandit.

🔘Sphinx.

🔘Custom Tasks.

Вы просто указываете путь к проекту, настраиваете задачи — и Code Spy начинает «шпионить» за файлами, реагируя на любые изменения.

✅Отличный инструмент, если хотите постоянно поддерживать качество кода, не думая о рутине.

#Python #CodeSpy #Automation #DevTools #Pytest #Pylint #MyPy #Black #Flask #CodeQuality

📱Ссылка на репозиторий:
https://github.com/joegasewicz/code-spy
Please open Telegram to view this post
VIEW IN TELEGRAM
1⚡322
📱Tryke.

Tryke - это современный фреймворк для тестирования в Python, который делает написание тестов более структурированным и интуитивно понятным.

Если в Python вам всегда не хватало красивого BDD-стиля (как в Jest или RSpec) с их вложенными блоками describe, то Tryke создан именно для вас!

🔹Главные фишки:

🔘Иерархия тестов: Логически группируйте сценарии с помощью контекстных менеджеров with t.describe("имя_группы"):.

🔘Умные фикстуры: Удобное внедрение зависимостей через аннотации типов (Annotated[..., t.Depends(...)]). Поддерживается кеширование на уровне модуля или отдельного блока describe (per="scope").

🔘Читаемые проверки (Assertions): Синтаксис t.expect(actual, "описание").to_equal(expected) делает отчеты об ошибках в консоли максимально понятными.

🔘Асинхронность из коробки: Нативная поддержка тестов через async def.

🔘Продвинутый CLI-раннер: Встроенный режим постоянной работы (tryke test --watch) для запуска тестов на лету при сохранении кода, а также запуск только для измененных файлов (--changed).

💡Переходите с pytest?

Авторы подготовили не только классическую шпаргалку по миграции, но и специальный готовый LLM-промпт. Вы можете просто скормить его своему ИИ-ассистенту (Cursor, Copilot и т.д.), и он поэтапно, с проверками перепишет ваши тесты с pytest на Tryke.

🚀Как запустить:

Если у вас есть uv, достаточно выполнить:
uvx tryke test

Пример синтаксиса:
import tryke as t

with t.describe("users"):
@t.test("stores a new user")
async def test_set(users: ...):
users["bob"] = "bob@example.com"
t.expect(users["bob"], "stores email").to_equal("bob@example.com")


#Python #Testing #Tryke #QA #DevTools #Backend #Pytest #OpenSource #Programming

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

Pytest-fly — это мощный инструмент для разработки, отладки и запуска сложных тестовых наборов на pytest. GUI с 6 вкладками в реальном времени мониторит выполнение тестов, параллелизм и ресурсы.

🔹6 вкладок GUI для полного контроля:

🔘Run — запуск/стоп, параллелизм, прогресс (%, время, coverage),
системные метрики (CPU/RAM/IO), failed тесты, live output.

🔘Graph — прогресс по модулям (горизонтальные бары).

🔘Table — статус тестов + CPU/RAM/coverage per test.

🔘Coverage — coverage over time (постоянно накапливается).

🔘Config — ordering, процессы, thresholds, expert settings.

🔘About — системная инфа.

🔻Ключевые фичи:

🔘Параллелизм по модулям (функции внутри модуля — serial).

🔘3 режима: Restart/Resume/Check (Check = resume если код не менялся).

🔘@pytest.mark.singleton — эксклюзивное выполнение.

🔘Resource monitoring per процесс (peak CPU/RAM).

🔘Smart ordering: failed → never-run → slow → coverage-efficient.

🔘Graceful stop/resume — останавливаешь и продолжаешь с места.

🔧Установка за секунду:

pip install pytest-fly
pytest --fly # или pytest-fly


#pytest #pytestfly #PythonTesting #TestAutomation #TDD #CI_CD #DevOps #PythonTools

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

Postman2pytest. — это
инструмент, который позволяет конвертировать JSON-файлы из Postman (коллекции v2.1) в готовые для запуска тесты pytest. И всё это одной командой!

Часто коллекции Postman служат отличной документацией для вашего API. Утилита postman2pytest превращает эту "документацию" в исполняемые регрессионные тесты на Python, которые легко встраиваются в CI/CD. Больше не нужно переписывать тесты вручную — вы избавляетесь от рутины и рассинхрона между доками и кодом.

🔹Главные фичи:

🔘Поддерживает GET, POST, PUT, DELETE, PATCH, HEAD и OPTIONS.

🔘Распознает заголовки (включая отключенные) и JSON-тела запросов (raw JSON body).

🔘Умеет вытаскивать ожидаемый HTTP-статус из скриптов Postman вида pm.response.to.have.status(200).

🔘Разворачивает вложенные папки Postman в плоский список тестов с понятными названиями (например, def test_users_post_create_user()).

🔘Позволяет сгенерировать тесты только для одной конкретной папки из коллекции (--filter-folder).

🔘Переменные вроде {{base_url}} автоматически преобразуются в f-строки и подхватываются через переменные окружения (например, BASE_URL).

🔧Установка:

pip install postman2pytest

🔻Как использовать:
postman2pytest \
--collection data/my_api.postman_collection.json \
--out generated_tests/test_api.py

# Запуск сгенерированных тестов
BASE_URL=https://staging.example.com pytest generated_tests/test_api.py -v


⚠️Ограничения: В текущей версии инструмент не переносит сложные тестовые скрипты (кроме проверки статуса), не поддерживает данные form-data и не читает Pre-request скрипты (например, автоматическое получение токенов OAuth придется завернуть в фикстуру pytest руками). Развитие проекта продолжается, и многие из этих пунктов уже в Roadmap.

#Python #Testing #QA #Postman #Pytest #API #DevTools #Backend #Automation

📱Ссылка на репозиторий:
https://github.com/golikovichev/postman2pytest
Please open Telegram to view this post
VIEW IN TELEGRAM
1⚡2👍2🔥2
📱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
📱Pytest-leak-finder.

Pytest-leak-finder - это плагин для pytest, который помогает быстро найти конкретный тест, загрязняющий общее состояние и ломающий последующие тесты в сьюте.

Знакома ситуация, когда тест стабильно падает при общем прогоне набора, но проходит без единой ошибки при изолированном запуске (pytest -v --lf)? Причина почти всегда в том, что один из предыдущих тестов оставил за собой «мусор» (неочищенный стейт, глобальную переменную или незакрытый ресурс). Но как найти виновника, если тестов сотни?

❓Как это работает.

Плагин автоматизирует поиск с помощью бинарного поиска (бисекции) — по аналогии с алгоритмом git bisect:

🔘Фиксация цели: При первом запуске с флагом --leak-finder упавший тест автоматически помечается как target.

🔘Деление пополам: На следующем шаге запускается первая половина тестов, предшествовавших цели, плюс сам целевой тест.

🔘Локализация:

✔️Если таргет снова упал — виновник в этой половине, диапазон поиска сужается еще вдвое.

✔️Если таргет прошел успешно — эта половина чистая, и плагин автоматически переключается на вторую часть сьюта.

🔘Результат: Итерации повторяются до тех пор, пока утилита не назовет точный тест, создающий утечку состояния.

🔻Пример использования:

Запуск поиска:

pytest -v --leak-finder demo/test_demo.py


После нескольких быстрых шагов бисекции плагин выдаст точный вердикт:

======================= Leak finder =======================
We found a leak!
Leak found in: tests/test_demo.py::test3


✅Инструмент экономит массу времени при отладке нестабильных (flaky) тестов и распутывании скрытых зависимостей в больших тест-паках.

#Python #Pytest #Testing #QA #Automation #Debugging #DevTools #OpenSource

📱Ссылка на репозиторий:
https://github.com/mgaitan/pytest-leak-finder
Please open Telegram to view this post
VIEW IN TELEGRAM
1⚡2🔥21
📱Vcrpy.

Vcrpy
- это библиотека для Python (порт популярного инструмента VCR из экосистемы Ruby), которая упрощает и многократно ускоряет тестирование кода, завязанного на сетевые HTTP-запросы.

Вместо того чтобы вручную мокать каждый эндпоинт сторонних API, VCR.py использует концепцию «кассет» (cassettes): при первом запуске теста библиотека перехватывает реальные HTTP-запросы и сериализует их вместе с ответами в локальный YAML-файл. При последующих прогонах реальные сетевые вызовы больше не происходят — VCR.py мгновенно воспроизводит сохраненные ответы из файла.

🔹Главные преимущества:

🔘Максимальная скорость тестов: Запросы отдаются моментально из локального файла, убирая задержки на сетевой round-trip и ответ сервера.

🔘Работа в офлайне: Тестовый сьют можно без проблем прогонять в самолете, поезде или на изолированных CI/CD раннерах без доступа во внешнюю сеть.

🔘100% детерминированность: Тесты перестают быть нестабильными (flaky) из-за проблем с интернетом, превышения лимитов API (rate limits) или временного падения сторонних сервисов.

🔘Простое обновление: Если логика удаленного API изменилась, не нужно переписывать моки вручную — достаточно удалить файл кассеты, и библиотека автоматически запишет свежие данные при следующем прогоне.

🔻Пример использования:

С использованием контекстного менеджера:
import urllib.request
import vcr

# Запросы внутри блока запишутся в файл cassettes/example.yaml
with vcr.use_cassette('cassettes/example.yaml'):
response = urllib.request.urlopen('http://httpbin.org/get').read()
assert b'origin' in response


В виде декоратора:

import vcr
import requests

@vcr.use_cassette('cassettes/users.yaml')
def test_users_api():
response = requests.get('https://api.example.com/users')
assert response.status_code == 200
assert len(response.json()) > 0


Совет для Pytest: Для максимально удобной работы в связке с pytest существует официальный плагин pytest-recording, позволяющий использовать маркер
@pytest.mark.vcr и флаги --record-mode .


📦Установка:
pip install vcrpy


✅Проект распространяется под открытой лицензией MIT.

#Python #Testing #QA #Pytest #VCR #VCRpy #Mocking #API #DevTools #OpenSource #Backend

📱Ссылка на репозиторий:
https://github.com/kevin1024/vcrpy
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍2🔥1
📱DeployProof.

DeployProof
- это инструмент командной строки (CLI) для Python, предназначенный для верификации кода (в том числе сгенерированного ИИ) с помощью молниеносного мутационного тестирования AST прямо в оперативной памяти.

Нейросети вроде Copilot или ChatGPT легко генерируют тесты со 100% покрытием строк (line coverage), которые при этом не проверяют реальную логику и граничные условия: мутационный скор у такого сьюта часто близок к нулю. DeployProof решает эту проблему прямо перед коммитом или пушем в CI.

🧬 В чем отличие от Mutmut и Cosmic Ray?

🔘Классические мутационные фреймворки перезаписывают исходные файлы на диске и заново запускают тесты для каждого мутанта на всем проекте, что занимает минуты или часы.

🔘DeployProof компилирует все мутации в единое условное AST-дерево прямо в RAM (без дискового I/O) и анализирует только измененные файлы из текущего git diff. Проверка отрабатывает за пару секунд — буквально пока вы переключаете вкладку.

🔹Ключевые возможности:

🔘In-Memory AST Mutation: Мутирует операторы (>=, ==, and, or), константы, граничные значения строк, меняет аргументы местами и убирает await без перезаписи файлов на диске.

🔘Самоисцеление тестов (Self-Healing Tests): Флаг --heal-tests анализирует выживших мутантов и автоматически синтезирует готовые к запуску pytest-кейсы, закрывающие обнаруженные дыры в логике.

🔘Комплексные шлюзы безопасности (Security Gates):

🔘SAST: Проверка на инъекции, shell=True, небезопасную десериализацию (pickle, yaml.load) и обход путей.

🔘Поиск секретов: Анализ энтропии Шеннона в файлах и последних 50 коммитах Git (поиск API-ключей OpenAI, AWS, GitHub, Stripe).

🔘Защита от галлюцинаций ИИ: Проверяет установленные пакеты через PyPI API на предмет выдуманных нейросетью библиотек (slopsquatting) и сопоставляет с базой уязвимостей OSV (CVE).

🔘100% приватность: Код и результаты тестов не покидают вашу локальную машину (в сеть уходят только read-only запросы к PyPI и OSV).

💻Пример работы:

# Проверка изменений в git diff перед пушем
deployproof check

# Автоматическая генерация тестов под выжившие мутации
deployproof check --heal-tests

# Установка pre-push хука в один клик
deployproof init


📦Установка:

pip install deployproof
# или изолированно через pipx:
pipx install deployproof


#Python #DeployProof #MutationTesting #Testing #QA #Pytest #AICode #DevTools #OpenSource #AppSec #CICD

📱Ссылка на репозиторий:
https://github.com/SVSPraveen/deployproof
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍2