123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- #!/usr/bin/env python3
- """
- 测试parse_pic.py的修复
- 验证batch_process_images函数能正确处理字典格式的输入
- """
- import sys
- import os
- import logging
- # 添加项目路径
- sys.path.append(os.path.dirname(os.path.abspath(__file__)))
- # 设置日志
- logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(name)s - %(funcName)s - %(lineno)d - %(message)s')
- def test_batch_process_images_fix():
- """测试batch_process_images函数的修复"""
- print("测试batch_process_images函数的修复...")
-
- try:
- from app.core.data_parse.parse_pic import batch_process_images
-
- # 测试数据 - 模拟错误日志中的输入格式
- test_input = [
- {
- 'minio_path': 'http://192.168.3.143:9000/dataops-bucket/misc_files/misc_file_20250801_212256_b61ddd94.png',
- 'original_filename': '杂项表格样例.png',
- 'status': '正常'
- }
- ]
-
- print(f"测试输入: {test_input}")
-
- # 调用函数(这里只是测试参数处理,不会真正处理图片)
- # 由于没有真实的图片文件,我们期望函数能正确处理参数格式而不抛出类型错误
- result = batch_process_images(test_input, process_type='table')
-
- print(f"函数执行结果: {result}")
- print("✓ batch_process_images函数修复验证通过")
-
- except TypeError as e:
- if "expected str, bytes or os.PathLike object, not dict" in str(e):
- print(f"❌ 仍然存在类型错误: {e}")
- return False
- else:
- print(f"其他类型错误: {e}")
- return False
- except Exception as e:
- print(f"其他错误: {e}")
- return False
-
- return True
- def test_invalid_input_handling():
- """测试无效输入的处理"""
- print("\n测试无效输入处理...")
-
- try:
- from app.core.data_parse.parse_pic import batch_process_images
-
- # 测试各种无效输入
- invalid_inputs = [
- [{'minio_path': None}], # minio_path为None
- [{'minio_path': {}}], # minio_path为字典
- [{'minio_path': 123}], # minio_path为数字
- [{'wrong_field': 'value'}], # 缺少minio_path字段
- [{'minio_path': ''}], # minio_path为空字符串
- ]
-
- for i, invalid_input in enumerate(invalid_inputs):
- print(f"测试无效输入 {i+1}: {invalid_input}")
- try:
- result = batch_process_images(invalid_input, process_type='table')
- print(f" 处理结果: {result.get('success', False)}")
- # 期望处理失败但不抛出类型错误
- if not result.get('success', False):
- print(f" ✓ 正确处理了无效输入")
- else:
- print(f" ⚠ 意外成功处理了无效输入")
- except TypeError as e:
- if "expected str, bytes or os.PathLike object, not dict" in str(e):
- print(f" ❌ 仍然存在类型错误: {e}")
- return False
- else:
- print(f" ✓ 正确处理了类型错误: {e}")
- except Exception as e:
- print(f" ✓ 正确处理了其他错误: {e}")
-
- print("✓ 无效输入处理验证通过")
- return True
-
- except Exception as e:
- print(f"❌ 测试失败: {e}")
- return False
- if __name__ == "__main__":
- print("开始测试parse_pic.py的修复...")
-
- success = True
-
- # 测试基本功能
- if not test_batch_process_images_fix():
- success = False
-
- # 测试无效输入处理
- if not test_invalid_input_handling():
- success = False
-
- if success:
- print("\n🎉 所有测试通过!parse_pic.py修复成功。")
- else:
- print("\n❌ 部分测试失败,需要进一步修复。")
- sys.exit(1)
|