走完初步流程

This commit is contained in:
2026-06-06 07:44:26 +08:00
parent 580fe4ad6e
commit e0d6bdc9c3
51 changed files with 6883 additions and 2410 deletions

View File

@@ -1,42 +0,0 @@
"""分析提示构建函数测试。"""
import sys
from pathlib import Path
sys.path.insert(0, str(Path(__file__).parent.parent / "src"))
from prompt import build_analysis_prompt
class TestBuildAnalysisPrompt:
"""测试分析提示构建函数。"""
def test_basic_prompt(self) -> None:
"""测试基础提示词包含核心结构。"""
prompt = build_analysis_prompt(purpose="", index="")
assert "专业研究分析师" in prompt
assert "关键实体" in prompt
def test_with_purpose(self) -> None:
"""测试传入目的时,提示词包含 Wiki 目的部分。"""
prompt = build_analysis_prompt(purpose="测试目的", index="")
assert "Wiki 目的" in prompt
assert "测试目的" in prompt
def test_with_index(self) -> None:
"""测试传入索引时,提示词包含 Wiki 索引部分。"""
prompt = build_analysis_prompt(purpose="", index="测试索引")
assert "当前 Wiki 索引" in prompt
assert "测试索引" in prompt
def test_empty_content(self) -> None:
"""测试空内容时,可选部分不出现在提示词中。"""
prompt = build_analysis_prompt(purpose="", index="")
assert "Wiki 目的" not in prompt
assert "当前 Wiki 索引" not in prompt
def test_language_from_config(self) -> None:
"""测试语言设置从配置文件读取。"""
prompt = build_analysis_prompt(purpose="", index="", configured_language=None)
assert "使用" in prompt
assert "语言输出分析报告" in prompt

View File

@@ -20,4 +20,4 @@ class TestConfig:
def test_get_language_from_config(self) -> None:
"""测试 get_language 能正常返回语言设置。"""
language = get_language()
assert language is not None
assert language is not None

View File

@@ -29,4 +29,4 @@ class TestLanguageRule:
def test_auto_detection_string(self) -> None:
"""测试传入 "auto" 字符串时触发自动检测。"""
result = language_rule("test", "auto")
assert "源文档" in result
assert "源文档" in result

View File

@@ -1,9 +1,8 @@
"""LLM 模块测试。"""
from unittest.mock import MagicMock, patch
import sys
from pathlib import Path
from unittest.mock import MagicMock, patch
sys.path.insert(0, str(Path(__file__).parent.parent / "src"))
@@ -40,7 +39,7 @@ class TestQueryAnalysis:
"""测试 query_analysis 端到端流程。"""
@patch("llm._create_llm")
@patch("llm.build_analysis_prompt")
@patch("llm.build_analysis_system_prompt")
def test_query_analysis_calls_llm(self, mock_prompt, mock_create_llm):
"""测试 query_analysis 正确调用 prompt 构建和 LLM stream_chat。"""
mock_prompt.return_value = "test prompt"
@@ -64,7 +63,7 @@ class TestQueryAnalysis:
assert result == "analysis result"
@patch("llm._create_llm")
@patch("llm.build_analysis_prompt")
@patch("llm.build_analysis_system_prompt")
def test_query_analysis_passes_source_content(self, mock_prompt, mock_create_llm):
"""测试 source_content 正确传递。"""
mock_prompt.return_value = "test prompt"
@@ -91,7 +90,7 @@ class TestQueryAnalysis:
)
@patch("llm._create_llm")
@patch("llm.build_analysis_prompt")
@patch("llm.build_analysis_system_prompt")
def test_query_analysis_returns_text(self, mock_prompt, mock_create_llm):
"""测试返回值是纯文本字符串。"""
mock_prompt.return_value = "prompt"
@@ -111,7 +110,7 @@ class TestQueryAnalysis:
assert "关键实体" in result
@patch("llm._create_llm")
@patch("llm.build_analysis_prompt")
@patch("llm.build_analysis_system_prompt")
def test_query_analysis_empty_response(self, mock_prompt, mock_create_llm):
"""测试 LLM 返回空字符串时不会崩溃。"""
mock_prompt.return_value = "prompt"
@@ -125,4 +124,4 @@ class TestQueryAnalysis:
result = query_analysis(purpose="", index="")
assert result == ""
assert result == ""