#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
GitHub
GitHub - pytest-dev/pytest-order: pytest plugin that allows to customize the test execution order
pytest plugin that allows to customize the test execution order - pytest-dev/pytest-order
👍4 2⚡1
ddmin — это библиотека на Python и инструмент командной строки, предназначенные для минимизации данных при сохранении определённого свойства. Обычно применяется для целей отладки, позволяя изолировать минимальную причину ошибки в сложных входных данных.
#DeltaDebugging #PythonTools #Debugging #QA #ddmin
https://github.com/andrewchambers/ddmin-python
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - andrewchambers/ddmin-python: A python implementation of delta debugging tool.
A python implementation of delta debugging tool. Contribute to andrewchambers/ddmin-python development by creating an account on GitHub.
1👍2🔥2
Synthetic Data Kit — инструмент генерации синтетических датасетов для дообучения LLM.
#SyntheticData #LLMFineTuning #Llama3 #AItools #PromptEngineering #ChainOfThought #AlpacaFormat #OpenAI #HuggingFace #vLLM #QA #GenAI #SyntheticDataKit #AIpipeline #OpenSourceAI
https://github.com/meta-llama/synthetic-data-kit
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - meta-llama/synthetic-data-kit: Tool for generating high quality Synthetic datasets
Tool for generating high quality Synthetic datasets - meta-llama/synthetic-data-kit
1👍2 2
Tryke - это современный фреймворк для тестирования в Python, который делает написание тестов более структурированным и интуитивно понятным.
Если в Python вам всегда не хватало красивого BDD-стиля (как в Jest или RSpec) с их вложенными блоками
describe, то Tryke создан именно для вас!with t.describe("имя_группы"):.Annotated[..., t.Depends(...)]). Поддерживается кеширование на уровне модуля или отдельного блока describe (per="scope").t.expect(actual, "описание").to_equal(expected) делает отчеты об ошибках в консоли максимально понятными.async def.tryke test --watch) для запуска тестов на лету при сохранении кода, а также запуск только для измененных файлов (--changed).Авторы подготовили не только классическую шпаргалку по миграции, но и специальный готовый 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
GitHub
GitHub - thejchap/tryke: A Rust-based Python test runner with a Jest-style API
A Rust-based Python test runner with a Jest-style API - thejchap/tryke
1🔥3 3👍1
Postman2pytest. — это инструмент, который позволяет конвертировать JSON-файлы из Postman (коллекции v2.1) в готовые для запуска тесты
pytest. И всё это одной командой!Часто коллекции Postman служат отличной документацией для вашего API. Утилита
postman2pytest превращает эту "документацию" в исполняемые регрессионные тесты на Python, которые легко встраиваются в CI/CD. Больше не нужно переписывать тесты вручную — вы избавляетесь от рутины и рассинхрона между доками и кодом.pm.response.to.have.status(200).def test_users_post_create_user()).--filter-folder).{{base_url}} автоматически преобразуются в f-строки и подхватываются через переменные окружения (например, BASE_URL).pip install postman2pytestpostman2pytest \
--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
GitHub
GitHub - golikovichev/postman2pytest: Convert Postman Collection v2.1 JSON into executable pytest test suites
Convert Postman Collection v2.1 JSON into executable pytest test suites - golikovichev/postman2pytest
1⚡2👍2🔥2
Spoof — это минималистичный и гибкий HTTP-сервер для Python, разработанный специально для изоляции и тестирования сетевого взаимодействия без боли.
Если вам когда-нибудь требовалось переписать клиентскую библиотеку, проверить её поведение в боевых условиях или полноценно замокать сторонний API на реальных сетевых сокетах (а не просто подменить методы в коде), Spoof станет идеальным решением.
http.server, не имеет внешних зависимостей и работает на Python 3.10–3.14..responses) или возвращает .defaultResponse. По умолчанию, если очередь пуста, он честно отдаст 503 Service Unavailable..requests. После тестов можно легко проверить, какие методы, заголовки, query-параметры или JSON-тела прилетали на сервер.CONNECT-запросов, а также умеет слушать исключительно IPv6-сокеты через класс spoof.http6.breakpoint(). При отправке запроса выполнение встанет на паузу, и вы сможете изучить объект request прямо в консоли через Pdb.import requests
import spoof
# Поднимаем сервер в контекстном менеджере
with spoof.http() as http:
# Задаем цепочку ответов
http.responses.extend([
[200, [("Content-Type", "application/json")], b'{"id": 1111}'],
[200, [("Content-Type", "application/json")], b'{"id": 2222}'],
])
http.defaultResponse = [404, [], "Not found"]
# Проверяем поведение клиента
assert requests.get(http.url + "/users").json() == {"id": 1111}
assert requests.get(http.url + "/posts").json() == {"id": 2222}
assert requests.get(http.url + "/unknown").status_code == 404
# Проверяем историю логов сервера
assert [r.path for r in http.requests] == ["/users", "/posts", "/unknown"]
pip install spoof
#Python #Testing #QA #Backend #Mock #HTTPServer #DevTools #OpenSource #WebDevelopment
https://github.com/lexsca/spoof
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - lexsca/spoof: A simple HTTP server for test environments
A simple HTTP server for test environments. Contribute to lexsca/spoof development by creating an account on GitHub.
1🔥4👍3⚡2
Tia - это инструмент анализа влияния тестов (Test Impact Analysis) для
pytest, который позволяет запускать только те тесты, на которые действительно повлияли ваши изменения в коде.Зачем тратить драгоценное время CI-пайплайнов на прогон сотен тестов, которые физически не могли сломаться от вашей правки?
Tia один раз собирает карту покрытия, а затем с помощью git diff вычисляет и запускает строго минимальный набор тестов. Эту же концепцию оптимизации используют внутри себя такие гиганты, как Google и Meta.Главный грех подобных утилит — случайно пропустить тест, который на самом деле должен был упасть. Разработчики
tia подошли к вопросу жестко:boltons) реальный показатель пропуска достигает 96%!black или добавление докстрингов, tia поймет через сравнение AST-деревьев, что рантайм-код не изменился, и пропустит 99%+ тестов.if TYPE_CHECKING: не запускают тесты зря. Но если вы измените тип поля в Pydantic или dataclass (что влияет на логику работы), утилита это честно отловит.tia record — запускает полную кодовую базу и строит карту на уровне конкретных методов и функций {тест -> {файл -> функции}}, сохраняя её в .tia/map.json. Благодаря системным аудит-хукам утилита запоминает даже не-Python файлы (фикстуры, шаблоны, конфиги), которые читал тест.tia run — анализирует текущий git diff, сопоставляет измененные строки с функциями и на основе 4 правил (попадание в функцию, изменение модуля, дата-зависимость и появление нового теста) отправляет в pytest только целевой набор.Карту тестов, собранную на базовой ветке, можно легко передавать в задачи пул-реквестов.
tia поддерживает работу с удаленными хранилищами из коробки:tia serve) без внешних зависимостей.s3://) и Google Cloud Storage (gs://).$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
GitHub
GitHub - breadMSA/pytest-tia: Test Impact Analysis for pytest: run only the tests your change actually affects. Method-level, tracks…
Test Impact Analysis for pytest: run only the tests your change actually affects. Method-level, tracks non-.py deps, CI-ready, and honest about its limits. - breadMSA/pytest-tia
1🔥2 2👍1
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
#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
GitHub
GitHub - mgaitan/pytest-leak-finder: Find the test that's leaking before the one that fails
Find the test that's leaking before the one that fails - mgaitan/pytest-leak-finder
1⚡2🔥2 1
Apkfile - это мощная Python-библиотека и удобный CLI-инструмент для чтения метаданных, глубокого аудита безопасности и установки Android-приложений любых форматов (.apk, .apkm, .xapk, .apks, .apkv).
Библиотека парсит
AndroidManifest.xml и resources.arsc напрямую через чистый Python (на базе androguard). Чтение метаданных происходит «лениво» прямо из байтов архива без распаковки на диск, а для работы больше не требуется утилита aapt..apk, сплиты и бандлы (.apkm, .xapk, .apks), а также формат .apkv (включая зашифрованные архивы).adaptive/anydpi/nodpi).debug_signed)./sdcard/Android/obb/), проверяет совместимость ABI и умеет сразу запускать указанную Activity.В коде Python:
from apkfile import ApkFile
apk = ApkFile("app.apk")
# Базовая информация
print(apk.package_name, apk.version_name, apk.version_code)
# Безопасность и компоненты
print("Опасные разрешения:", apk.security.dangerous_permissions)
print("Незащищенный экспорт:", apk.security.unprotected_exported_components)
# Сравнение двух версий приложения
old_apk, new_apk = ApkFile("v1.apk"), ApkFile("v2.apk")
diff = old_apk.diff(new_apk)
print("Добавленные права:", diff.permissions_added)
# Установка через ADB с последующим запуском
apk.install(upgrade=True, launch=True)
Через командную строку (CLI):
# Получить полную JSON-сводку о приложении
apkfile info app.apk --full
# Сравнить две версии APK
apkfile diff old.apk new.apk
# Установить и сразу запустить на устройстве
apkfile install app.xapk --launch
pip install -U apkfile
# или через uv:
uv add apkfile
#Python #Android #APK #MobileSecurity #AppSec #QA #Automation #DevTools #OpenSource #ADB
https://github.com/david-lev/apkfile
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - david-lev/apkfile: ⛏️ Python library for reading Android .apk/.apkm/.xapk/.apks/.apkv metadata and installing/uninstalling…
⛏️ Python library for reading Android .apk/.apkm/.xapk/.apks/.apkv metadata and installing/uninstalling over adb - david-lev/apkfile
3🔥3 3
Vcrpy - это библиотека для Python (порт популярного инструмента VCR из экосистемы Ruby), которая упрощает и многократно ускоряет тестирование кода, завязанного на сетевые HTTP-запросы.
Вместо того чтобы вручную мокать каждый эндпоинт сторонних API, VCR.py использует концепцию «кассет» (cassettes): при первом запуске теста библиотека перехватывает реальные HTTP-запросы и сериализует их вместе с ответами в локальный YAML-файл. При последующих прогонах реальные сетевые вызовы больше не происходят — VCR.py мгновенно воспроизводит сохраненные ответы из файла.
С использованием контекстного менеджера:
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
#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
GitHub
GitHub - kevin1024/vcrpy: Automatically mock your HTTP interactions to simplify and speed up testing
Automatically mock your HTTP interactions to simplify and speed up testing - kevin1024/vcrpy
DeployProof - это инструмент командной строки (CLI) для Python, предназначенный для верификации кода (в том числе сгенерированного ИИ) с помощью молниеносного мутационного тестирования AST прямо в оперативной памяти.
Нейросети вроде Copilot или ChatGPT легко генерируют тесты со 100% покрытием строк (line coverage), которые при этом не проверяют реальную логику и граничные условия: мутационный скор у такого сьюта часто близок к нулю. DeployProof решает эту проблему прямо перед коммитом или пушем в CI.
🧬 В чем отличие от Mutmut и Cosmic Ray?
git diff. Проверка отрабатывает за пару секунд — буквально пока вы переключаете вкладку.>=, ==, and, or), константы, граничные значения строк, меняет аргументы местами и убирает await без перезаписи файлов на диске.--heal-tests анализирует выживших мутантов и автоматически синтезирует готовые к запуску pytest-кейсы, закрывающие обнаруженные дыры в логике.shell=True, небезопасную десериализацию (pickle, yaml.load) и обход путей.# Проверка изменений в 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
GitHub
GitHub - SVSPraveen/deployproof: Deterministic pre-push verification for AI-assisted codebases: AST mutation testing, credential…
Deterministic pre-push verification for AI-assisted codebases: AST mutation testing, credential scanning, sandbox-escape detection, mock-usage alerts, and dependency hallucination defense. - SVSPra...