Машинный перевод
Эта страница была автоматически переведена ИИ и может содержать ошибки. Если что-то неясно, обращайтесь к английскому источнику.
Тестовые фикстуры¶
tests/fixtures/ содержит детерминированные, API-образные симулированные данные для
тестового набора. Входные данные моделируют репрезентативные структуры тредов и
рабочих процессов; их отрендеренные продукты фиксируются как золотые снимки.
1. Контракт источника¶
Текущее зафиксированное содержимое фикстур является симулированным:
- Новые или обновленные фикстуры должны создаваться как симулированные данные; участники
не должны заполнять их импортом
web_archive/, данных учетных записей пользователей, живых ответов API или частных архивов. - Имена, личности, идентификаторы, подсказки, ответы, полезные нагрузки рабочих процессов, пути и URL-адреса в зафиксированных файлах являются тестовыми заполнителями.
- JSON отражает схемы производственных ответов и архивов только для проверки поведения парсера, рендерера, состояния и отношений.
- Репозиторий не фиксирует обратное отображение заполнителей на частные идентификаторы.
Термины фикстура полного режима и фикстура сокращенного сценария описывают охват тестирования и форму входных данных, а не происхождение. Оба являются симулированными данными.
2. Контракт каталога¶
Каждый каталог фикстур содержит симулированные входные данные в форме необработанных ответов и,
где необходимо сравнение снимков, дерево golden/:
| Путь | Роль |
|---|---|
raw_entries.json |
симулированные записи тредов в форме производственных ответов |
raw_blocks.json |
симулированные блоки рабочих процессов; отсутствуют, если у режима нет ответа с блоками |
thread.json |
симулированные метаданные архивированных тредов |
golden/conversation.md + golden/turns/turn_*.md |
продукты, сгенерированные из симулированных входных данных и сравниваемые побайтово |
Текущие детерминированные соглашения включают:
- фиктивные учетные записи
alice/bob, примеры личностей, фиктивное пространство BOT и фиксированный фиктивныйread_write_token; - идентификаторы, производные от uuid5, помеченные
5cbeef00, сохраняющие намеренные перекрестные ссылки между симулированными записями; - симулированные идентификаторы
toolu_фиксированной длины, помеченные5crub0; - общие подсказки, заголовки, текст рабочих процессов и пути файлов; а также
- удаленные строки запроса подписанных URL.
Эти соглашения облегчают обнаружение случайных остатков, специфичных для окружения; они не подразумевают, что симулированные идентификаторы были получены из живых объектов.
3. Инвентаризация¶
3.1 Фикстуры полного режима¶
Это полные симулированные разговоры для каждого поддерживаемого режима:
| Фикстура | Охват |
|---|---|
search_demo |
поиск, один оборот; R-блок кода и встроенный код |
deep_research_demo |
глубокое исследование; сквозное преобразование математических разделителей |
computer_demo |
компьютер, семиоборотный рендеринг рабочего процесса |
council_demo |
рендеринг комитета модели совета с большой вложенной полезной нагрузкой |
study_demo |
рендеринг режима обучения |
3.2 Фикстуры сокращенных сценариев¶
Это целенаправленные симулированные полезные нагрузки, содержащие только записи и отношения, необходимые для регрессии. «Сокращенный» не означает извлеченный из реального треда.
| Фикстура | Охват |
|---|---|
scenario_computer_answer_fallback |
восстановить ответ из схематизированного блока рабочего процесса, когда обычный путь FINAL недоступен |
scenario_subagent_fallback |
отобразить заголовок под-агента и его собственные элементы, когда нет соответствующего фона |
scenario_user_response |
рендеринг вопроса/ответа WORKFLOW_ITEM_USER_RESPONSE |
scenario_subagent_stub |
десятисекундное окно ассоциации для незакрепленного заглушки результата под-агента |
scenario_workflow_item_nested |
вложенный рендеринг свернутого блока WORKFLOW_ITEM_WORKFLOW |
scenario_limit_interrupted |
прерывание лимита расходов, водопад атрибуции, размещение приложения и отсутствие двойного рендеринга |
scenario_canceled |
аннотация WORKFLOW_CANCELED |
4. Обслуживание фикстур¶
tests/scrub_fixtures.py нормализует симулированные данные, перегенерирует золотые
продукты через производственный офлайн-рендерер и обеспечивает шлюз остатков:
uv run python tests/scrub_fixtures.py
uv run python tests/scrub_fixtures.py --check
- Регенерация — каждая фикстура рендерится во временном каталоге через
pplx_export.commands.rerender_cmd.rerender; несоответствия количества оборотов прерывают выполнение. - Детерминированная нормализация — текст-заполнитель, UUID, значения
toolu_, токены и подписанные URL нормализуются идемпотентно. - Безопасные входные данные не являются происхождением — необязательная локальная
конфигурация
tests/scrub_pairs.local.jsonи учетной записи пользователя только расширяет проверки замены и остатков. Они не должны использоваться как входные данные для построения сценариев фикстур. - Режим проверки —
--checkне выполняет запись и завершается ошибкой при наличии настроенных остатков, локальных абсолютных путей или учетных данных подписанных URL.
Запускайте инструмент обслуживания после изменения симулированных входных JSON или вывода рендерера,
и запускайте --check перед фиксацией изменений фикстур.
5. Авторитет золотого снимка¶
Зафиксированный симулированный JSON является авторитетным источником входных данных. Золотой Markdown является производным выводом: он перегенерируется из этого JSON с помощью текущего производственного пути повторного рендеринга и затем фиксируется для побайтового регрессионного сравнения. Он не должен редактироваться как независимый источник истины.
6. См. также¶
- Тестирование — как набор использует фикстуры
- Архитектура тестовой системы — уровни регрессии и гарантии
tests/fixtures/README.md— инвентаризация фикстур в репозитории