debug: 创建完整端到端测试脚本
为了准确定位 file_path 为 null 的问题,创建了 test_end_to_end.py 测试脚本。 测试流程: 1. 创建测试配置 2. 调用 generate_daily_report 生成日报 3. 查询历史记录 4. 检查 file_path 是否正确保存 5. 清理测试数据 运行方式: ```bash python test_end_to_end.py ``` 这个测试会模拟完整的生成流程,帮助定位问题出在哪个环节。 Coze-Commit-Type: user Coze-User-ID: 3722323274763196 Coze-Conversation-ID: 9894087
This commit is contained in:
111
test_end_to_end.py
Normal file
111
test_end_to_end.py
Normal file
@@ -0,0 +1,111 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
完整的端到端测试:生成日报并检查历史记录
|
||||
"""
|
||||
|
||||
import sys
|
||||
import os
|
||||
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
|
||||
|
||||
from lib.report_generator import generate_daily_report
|
||||
from lib.db import execute_query, execute_update
|
||||
|
||||
def test_full_flow():
|
||||
"""测试完整流程"""
|
||||
print("="*60)
|
||||
print("完整端到端测试")
|
||||
print("="*60)
|
||||
|
||||
try:
|
||||
# 1. 创建测试配置
|
||||
print("\n1. 创建测试配置...")
|
||||
from lib.db import execute_insert
|
||||
import json
|
||||
|
||||
config_id = 999998
|
||||
config_name = "测试配置_端到端"
|
||||
split_type = "company_id"
|
||||
split_value = "test_company"
|
||||
split_name = "测试公司"
|
||||
selected_fields = ["order_no", "report_time", "total_money"]
|
||||
sum_fields = ["total_money"]
|
||||
|
||||
# 删除旧配置
|
||||
execute_update("DELETE FROM t_daily_report_config WHERE id = %s", (config_id,))
|
||||
|
||||
# 插入新配置
|
||||
insert_sql = """
|
||||
INSERT INTO t_daily_report_config
|
||||
(id, config_name, split_type, split_value, split_name, selected_fields, sum_fields, is_active, sort_order)
|
||||
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s)
|
||||
"""
|
||||
execute_insert(insert_sql, (
|
||||
config_id,
|
||||
config_name,
|
||||
split_type,
|
||||
split_value,
|
||||
split_name,
|
||||
json.dumps(selected_fields, ensure_ascii=False),
|
||||
json.dumps(sum_fields, ensure_ascii=False),
|
||||
1,
|
||||
0
|
||||
))
|
||||
print(f" ✓ 配置已创建,ID: {config_id}")
|
||||
|
||||
# 2. 生成日报
|
||||
print("\n2. 生成日报...")
|
||||
result = generate_daily_report(config_id)
|
||||
|
||||
print(f" 生成结果:")
|
||||
print(f" - success: {result.get('success')}")
|
||||
print(f" - file_path: {result.get('file_path')}")
|
||||
print(f" - total_orders: {result.get('total_orders')}")
|
||||
print(f" - history_id: {result.get('history_id')}")
|
||||
|
||||
if not result.get('success'):
|
||||
print(f" ✗ 生成失败: {result.get('message')}")
|
||||
return
|
||||
|
||||
# 3. 查询历史记录
|
||||
print("\n3. 查询历史记录...")
|
||||
history_id = result.get('history_id')
|
||||
query_sql = "SELECT * FROM t_daily_report_history WHERE id = %s"
|
||||
history_records = execute_query(query_sql, (history_id,))
|
||||
|
||||
if history_records and len(history_records) > 0:
|
||||
record = history_records[0]
|
||||
print(f" ✓ 历史记录查询成功")
|
||||
print(f" - ID: {record.get('id')}")
|
||||
print(f" - config_name: {record.get('config_name')}")
|
||||
print(f" - file_path: '{record.get('file_path')}'")
|
||||
print(f" - status: {record.get('status')}")
|
||||
print(f" - total_orders: {record.get('total_orders')}")
|
||||
|
||||
if record.get('file_path') and record.get('file_path') != '':
|
||||
print(f"\n✓✓✓ 端到端测试成功!file_path 已正确保存")
|
||||
print(f" 文件路径: {record.get('file_path')}")
|
||||
else:
|
||||
print(f"\n❌❌❌ file_path 为空!")
|
||||
else:
|
||||
print(" ❌ 未找到历史记录")
|
||||
|
||||
# 4. 清理测试数据
|
||||
print("\n4. 清理测试数据...")
|
||||
execute_update("DELETE FROM t_daily_report_history WHERE config_id = %s", (config_id,))
|
||||
execute_update("DELETE FROM t_daily_report_config WHERE id = %s", (config_id,))
|
||||
print(" ✓ 已清理")
|
||||
|
||||
print("\n" + "="*60)
|
||||
print("测试完成")
|
||||
print("="*60)
|
||||
|
||||
except Exception as e:
|
||||
print(f"\n❌ 测试失败: {e}")
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
|
||||
input("\n按回车键退出...")
|
||||
|
||||
if __name__ == "__main__":
|
||||
test_full_flow()
|
||||
Reference in New Issue
Block a user