partest-atlas
Агент сбора для «Вехи» — карты системы, раскрашенной тестами.
Пакет снимает наблюдения на прогоне автотестов и рядом с ним, складывает их в версионированные JSON-артефакты и на этом останавливается. Выводы из артефактов делает сервер «Веха» — отдельная программа, которая этот пакет не импортирует и не требуется ему для работы.
PyPI: partest-atlas · Лицензия: MIT
pip install partest-atlas
Зачем разделено так
Агент — измерительные приборы: он записывает, что клик ушёл в такой-то запрос, что за тест изменилось в счётчиках таблиц, какие смещения были у топиков до и после. Каждое наблюдение само по себе бесполезно.
Сервер — тот, кто из наблюдений делает вывод: «в таблицу писал не API, а консьюмер, потому что между последним пишущим запросом теста и изменением прошло событие шины».
Поэтому агент открыт: он ходит в базу, шину и логи заказчика, и его должна иметь возможность прочитать служба безопасности. Защищать здесь нечего — ценность не в сборе.
Что внутри
partest_atlas/
artifacts.py контракт артефактов: version, kind, scope, атомарная запись
collect/ сборщики: схема БД, эффекты в БД, шина, логи контейнеров,
контракт OpenAPI, требования из спецификаций, поток UI
adapters/ доступ к чужим системам: db/ bus/ containers/ ci/ tests/ contract/
plugins/ pytest-плагины (entry point pytest11), молчат без переменных окружения
wrap.py `atlas wrap -- <любая команда>` — снимки до и после чужого прогона
Три уровня внедрения
| Уровень | Что делает проект | Что даёт |
|---|---|---|
| Обёртка | atlas wrap -- <своя команда прогона> |
состояние до и после прогона; работает с любым раннером, включая не-Python |
| Агент | ставит пакет, выставляет ATLAS_* |
наблюдения вокруг каждого теста (pytest) |
| Маркеры | @pytest.mark.req(...), @pytest.mark.db_effects |
трассируемость требований и точный отбор тестов под замер |
Плагины подключаются через pytest11 и молчат, пока не выставлена соответствующая
переменная окружения — обычный прогон не платит за их присутствие ничего.
Раскладка артефактов
atlas/<система>/<контур>/db_schema.json
atlas/<система>/<контур>/ui_flow.json
...
Заголовок каждого файла несёт version, kind, scope и время сбора, поэтому потребитель
может честно сказать «артефакт старого формата», а не упасть на отсутствующем поле.
Отношение к partest
partest-atlas зависит от partest и переиспользует
её, а не дублирует: сопоставление URL с шаблоном OpenAPI (partest.path_match), разбор
контракта, редактирование секретов (partest.redact), маркер тестовых данных, покрытие по
методике. Обратной зависимости нет и не будет: partest про partest-atlas не знает.
Статус
Ранняя разработка. Код переносится из прототипа (src/atlas проекта-прародителя) по плану
в документации сервера.
Metadata
Release files for partest-atlas 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| partest_atlas-0.1.0.tar.gz | 76.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| partest_atlas-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 133.2 kB
Release files / partest_atlas-0.1.0.tar.gz
| Download URL | partest_atlas-0.1.0.tar.gz |
|---|---|
| Size | 76.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
98fe1dc1f08fc06278de3def5fce02383c8e0461ad686f63a762974a9da95b09
|
|
BLAKE2b-256 checksum How to use checksums |
3ba9c8657487308430ea48388864832ce94f7374a440c15206dc6d4612a3caf0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.11
|
Release files / partest_atlas-0.1.0-py3-none-any.whl
| Download URL | partest_atlas-0.1.0-py3-none-any.whl |
|---|---|
| Size | 56.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
014e8764d55907e5389b1211a542ad36bbc0df8d3aa0d45f59f19613e978da09
|
|
BLAKE2b-256 checksum How to use checksums |
7b0c07fc2bcdf77853511b588aa0aa7e7a6f3ffbc943ea6492069b4cef42aba1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.11
|