Files
life-echo/api/tests/evaluation/test_importers.py

75 lines
1.5 KiB
Python
Raw Normal View History

from app.features.evaluation.importers.script_json import parse_script_json
from pathlib import Path
import pytest
from app.features.evaluation.importers.user_export_markdown import (
extract_dialogue_turns_from_export_md,
extract_user_utterances_from_export_md,
)
def test_parse_script_json_list() -> None:
u, meta = parse_script_json('["a", "b"]')
assert u == ["a", "b"]
assert meta == {}
def test_parse_script_json_object() -> None:
u, meta = parse_script_json('{"utterances":["x"],"foo":1}')
assert u == ["x"]
assert meta == {"foo": 1}
def test_extract_user_lines_from_export_md() -> None:
md = """
**用户:**
hello
**AI:**
hi
"""
assert extract_user_utterances_from_export_md(md) == ["hello"]
def test_extract_dialogue_turns_from_export_md() -> None:
md = """
#### 轮次 1 — x
**用户:**
u1
**AI:**
a1
#### 轮次 2 — y
**用户:**
u2
**AI:**
a2
"""
turns = extract_dialogue_turns_from_export_md(md)
assert turns == [("u1", "a1"), ("u2", "a2")]
def test_extract_dialogue_turns_from_repo_user_export() -> None:
p = (
Path(__file__).resolve().parents[1]
/ "user_exports"
/ "13701020203_e27fcd97-fefa-43b8-a7a3-3ecd49ebf5f0.md"
)
if not p.is_file():
pytest.skip("user export fixture not present")
text = p.read_text(encoding="utf-8")
turns = extract_dialogue_turns_from_export_md(text)
assert len(turns) >= 5
assert "你好" in turns[0][0]