Перейти к содержанию

Машинный перевод

Эта страница была автоматически переведена ИИ и может содержать ошибки. Если что-то неясно, обращайтесь к английскому источнику.

Английский источник · Сообщить о проблеме перевода

Тестовые фикстуры

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. См. также