走完初步流程
This commit is contained in:
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 == ""
|
||||
|
||||
Reference in New Issue
Block a user