195 lines
5.1 KiB
Go
195 lines
5.1 KiB
Go
package collect
|
||
|
||
import (
|
||
"context"
|
||
"geo/internal/collect"
|
||
"geo/internal/config"
|
||
"github.com/gofiber/fiber/v2/log"
|
||
"testing"
|
||
"time"
|
||
)
|
||
|
||
var (
|
||
deepseekCfg, _ = config.LoadConfig()
|
||
|
||
deepseekManager = collect.NewCollectManager(context.Background(), deepseekCfg, log.DefaultLogger())
|
||
)
|
||
|
||
// TestDeepseekCollector_WaitLogin 测试DeepSeek登录功能
|
||
func TestDeepseekCollector_WaitLogin(t *testing.T) {
|
||
if testing.Short() {
|
||
t.Skip("跳过需要浏览器交互的测试")
|
||
}
|
||
|
||
params := &collect.CollectParams{
|
||
Headless: false, // 显示浏览器窗口以便扫码登录
|
||
RequestID: "test_deepseek_login_001",
|
||
Platform: "deepseek",
|
||
}
|
||
|
||
t.Log("开始测试DeepSeek登录...")
|
||
t.Log("请在打开的浏览器窗口中完成DeepSeek账号登录(扫码或输入账号密码)")
|
||
|
||
success, msg := deepseekManager.WaitLogin("deepseek", params)
|
||
|
||
if !success {
|
||
t.Errorf("DeepSeek登录失败: %s", msg)
|
||
return
|
||
}
|
||
|
||
t.Logf("DeepSeek登录成功: %s", msg)
|
||
t.Log("Cookie已保存,后续测试可以使用已登录状态")
|
||
}
|
||
|
||
// TestDeepseekCollector_AskQuestion 测试DeepSeek提问功能
|
||
// 注意:此测试需要有效的登录状态
|
||
func TestDeepseekCollector_AskQuestion(t *testing.T) {
|
||
if testing.Short() {
|
||
t.Skip("跳过需要浏览器交互的测试")
|
||
}
|
||
|
||
// 设置收集参数
|
||
params := &collect.CollectParams{
|
||
Headless: false, // 显示浏览器以便调试
|
||
RequestID: "test_deepseek_001",
|
||
Platform: "deepseek",
|
||
}
|
||
|
||
// 定义提问内容
|
||
question := "四川房地产软件排名"
|
||
t.Logf("向DeepSeek提问: %s", question)
|
||
|
||
// 调用管理器提问并获取答案
|
||
result, err := deepseekManager.AskQuestion("deepseek", params, question)
|
||
if err != nil {
|
||
t.Errorf("提问失败: %v", err)
|
||
return
|
||
}
|
||
|
||
t.Logf("获取到答案:\n%s", result.Answer)
|
||
t.Logf("分享链接: %s", result.ShareLink)
|
||
|
||
// 验证答案非空
|
||
if len(result.Answer) == 0 {
|
||
t.Error("答案为空")
|
||
}
|
||
}
|
||
|
||
// TestDeepseekCollector_MultipleQuestions 测试DeepSeek多次提问功能
|
||
func TestDeepseekCollector_MultipleQuestions(t *testing.T) {
|
||
if testing.Short() {
|
||
t.Skip("跳过需要浏览器交互的测试")
|
||
}
|
||
|
||
// 设置收集参数
|
||
params := &collect.CollectParams{
|
||
Headless: true, // 使用无头模式提高速度
|
||
RequestID: "test_deepseek_multi_001",
|
||
Platform: "deepseek",
|
||
}
|
||
|
||
// 定义多个问题
|
||
questions := []string{
|
||
"什么是人工智能?",
|
||
"如何学习Go语言?",
|
||
"推荐几个优秀的开源项目",
|
||
}
|
||
|
||
t.Logf("开始测试DeepSeek多次提问,共 %d 个问题", len(questions))
|
||
|
||
for i, question := range questions {
|
||
t.Logf("[%d/%d] 提问: %s", i+1, len(questions), question)
|
||
|
||
result, err := deepseekManager.AskQuestion("deepseek", params, question)
|
||
if err != nil {
|
||
t.Errorf("第 %d 个问题提问失败: %v", i+1, err)
|
||
continue
|
||
}
|
||
|
||
previewLen := min(len(result.Answer), 100)
|
||
t.Logf("第 %d 个回答长度: %d, 预览: %s...", i+1, len(result.Answer), result.Answer[:previewLen])
|
||
}
|
||
|
||
t.Log("多次提问测试完成")
|
||
}
|
||
|
||
// TestDeepseekCollector_SpeedTest 测试DeepSeek响应速度
|
||
func TestDeepseekCollector_SpeedTest(t *testing.T) {
|
||
if testing.Short() {
|
||
t.Skip("跳过需要浏览器交互的测试")
|
||
}
|
||
|
||
params := &collect.CollectParams{
|
||
Headless: true,
|
||
RequestID: "test_deepseek_speed_001",
|
||
Platform: "deepseek",
|
||
}
|
||
|
||
question := "用一句话介绍你自己"
|
||
t.Logf("测试DeepSeek响应速度,问题: %s", question)
|
||
|
||
startTime := time.Now()
|
||
result, err := deepseekManager.AskQuestion("deepseek", params, question)
|
||
elapsed := time.Since(startTime)
|
||
|
||
if err != nil {
|
||
t.Errorf("提问失败: %v", err)
|
||
return
|
||
}
|
||
|
||
t.Logf("响应时间: %v", elapsed)
|
||
t.Logf("答案长度: %d 字符", len(result.Answer))
|
||
t.Logf("答案: %s", result.Answer)
|
||
|
||
// 验证响应时间在合理范围内(例如60秒内)
|
||
if elapsed.Seconds() > 60 {
|
||
t.Logf("警告: 响应时间过长: %v", elapsed)
|
||
}
|
||
}
|
||
|
||
// TestDeepseekCollector_BrowserStorage 测试浏览器存储功能
|
||
func TestDeepseekCollector_BrowserStorage(t *testing.T) {
|
||
if testing.Short() {
|
||
t.Skip("跳过需要浏览器交互的测试")
|
||
}
|
||
|
||
t.Log("测试DeepSeek浏览器存储保存和加载功能")
|
||
t.Log("此测试将验证Cookies、LocalStorage和SessionStorage的保存和加载")
|
||
|
||
// 第一步:登录并保存浏览器存储
|
||
loginParams := &collect.CollectParams{
|
||
Headless: false,
|
||
RequestID: "test_deepseek_storage_001",
|
||
Platform: "deepseek",
|
||
}
|
||
|
||
t.Log("步骤1: 请登录DeepSeek账号...")
|
||
success, msg := deepseekManager.WaitLogin("deepseek", loginParams)
|
||
if !success {
|
||
t.Errorf("登录失败: %s", msg)
|
||
return
|
||
}
|
||
t.Logf("登录成功: %s", msg)
|
||
|
||
// 第二步:使用保存的存储进行提问
|
||
askParams := &collect.CollectParams{
|
||
Headless: true,
|
||
RequestID: "test_deepseek_storage_002",
|
||
Platform: "deepseek",
|
||
}
|
||
|
||
question := "你好"
|
||
t.Logf("步骤2: 使用保存的浏览器存储提问: %s", question)
|
||
|
||
result, err := deepseekManager.AskQuestion("deepseek", askParams, question)
|
||
if err != nil {
|
||
t.Errorf("提问失败: %v", err)
|
||
return
|
||
}
|
||
|
||
t.Logf("提问成功,答案长度: %d 字符", len(result.Answer))
|
||
t.Logf("预览: %s...", result.Answer[:min(len(result.Answer), 50)])
|
||
|
||
t.Log("浏览器存储测试完成")
|
||
}
|