59 lines
2.1 KiB
Plaintext
59 lines
2.1 KiB
Plaintext
# -*- coding: utf-8 -*-
|
||
"""
|
||
可选桌面 E2E 示例(默认不执行:文件名后缀为 .sample)。
|
||
|
||
启用方式:
|
||
复制本文件为 test_desktop_smoke.py,按目标技能修改提问文案与断言。
|
||
运行:pytest tests/desktop/test_desktop_smoke.py -v -s
|
||
|
||
依赖:pytest、jiangchang_desktop_sdk、匠厂桌面宿主已就绪。
|
||
"""
|
||
from __future__ import annotations
|
||
|
||
import logging
|
||
import os
|
||
|
||
import pytest
|
||
|
||
from jiangchang_desktop_sdk import AskOptions, JiangchangDesktopClient
|
||
|
||
_logger = logging.getLogger("skill-template-desktop-e2e-sample")
|
||
if not _logger.handlers:
|
||
_logger.setLevel(logging.INFO)
|
||
_h = logging.StreamHandler()
|
||
_h.setFormatter(logging.Formatter("[E2E-sample] %(message)s"))
|
||
_logger.addHandler(_h)
|
||
|
||
_ARTIFACT_DIR = os.path.join(os.path.dirname(__file__), "artifacts")
|
||
|
||
|
||
class TestDesktopSmokeSample:
|
||
"""最小 smoke:拉起桌面、等待网关、发一条与技能路由相关的问句并做宽松断言。"""
|
||
|
||
@pytest.fixture(autouse=True)
|
||
def connect_and_teardown(self, request):
|
||
client = JiangchangDesktopClient()
|
||
_logger.info("ensure_app_running")
|
||
client.ensure_app_running(wait_timeout_s=30)
|
||
client.bring_to_front()
|
||
client.wait_gateway_ready(timeout_ms=30000)
|
||
self.client = client
|
||
yield
|
||
try:
|
||
rep = getattr(request.node, "rep_call", None)
|
||
if rep is not None and rep.failed:
|
||
os.makedirs(_ARTIFACT_DIR, exist_ok=True)
|
||
paths = client.snapshot(_ARTIFACT_DIR, tag=request.node.name)
|
||
_logger.error("snapshot: %s", paths)
|
||
finally:
|
||
client.disconnect()
|
||
|
||
def test_gateway_and_simple_ask(self) -> None:
|
||
"""请将 SKILL 名与路由关键词改成你复制后的真实技能。"""
|
||
answer = self.client.ask(
|
||
"请使用当前已安装技能执行一次 health 检查并返回 OK 或等价结果。",
|
||
AskOptions(timeout=120000, new_task=True),
|
||
)
|
||
assert answer
|
||
assert "OK" in answer or "ok" in answer.lower() or "健康" in answer
|