G41_TAPD_BUG_SYNC/test_attachment.py

148 lines
4.5 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
附件功能测试脚本
用于测试附件下载和上传功能
"""
import sys
from pathlib import Path
# 添加项目根目录到Python路径
project_root = Path(__file__).parent
sys.path.insert(0, str(project_root))
from src.config import ConfigManager
from src.token_manager import TokenManager
from src.attachment_handler import AttachmentHandler
from src.tapd_api import TAPDApi
def test_attachment_handler():
"""测试附件处理器"""
print("\n" + "=" * 60)
print("测试1附件处理器初始化")
print("=" * 60)
try:
# 加载配置
config_manager = ConfigManager()
attachment_config = config_manager.get_attachment_config()
print(f"✓ 附件配置加载成功:")
print(f" 临时目录: {attachment_config['temp_dir']}")
print(f" 最大文件大小: {attachment_config['max_file_size']}MB")
print(f" 下载超时: {attachment_config['download_timeout']}")
print(f" 上传超时: {attachment_config['upload_timeout']}")
print(f" 下载重试次数: {attachment_config['download_retry']}")
print(f" 上传重试次数: {attachment_config['upload_retry']}")
# 获取access_token
token_manager = TokenManager()
access_token = token_manager.get_token()
print(f"\n✓ access_token获取成功")
# 初始化附件处理器
handler = AttachmentHandler(access_token, attachment_config)
print(f"\n✓ 附件处理器初始化成功")
return True
except Exception as e:
print(f"\n✗ 测试失败: {e}")
import traceback
traceback.print_exc()
return False
def test_tapd_upload():
"""测试TAPD附件上传功能"""
print("\n" + "=" * 60)
print("测试2TAPD附件上传API")
print("=" * 60)
try:
# 加载配置
config_manager = ConfigManager()
tapd_config = config_manager.get_tapd_config()
attachment_config = config_manager.get_attachment_config()
# 初始化TAPD API
tapd_api = TAPDApi(tapd_config['workspace_id'], test_mode=False)
print(f"✓ TAPD API初始化成功")
# 检查是否有测试文件
test_file = Path("test.png")
if not test_file.exists():
print(f"\n⚠ 测试文件不存在: {test_file}")
print(f" 请在项目根目录放置一个test.png文件用于测试")
return False
print(f"\n✓ 找到测试文件: {test_file}")
print(f" 文件大小: {test_file.stat().st_size / 1024:.2f}KB")
# 提示用户输入bug_id
print(f"\n请输入一个已存在的bug ID用于测试附件上传:")
print(f"(如果不想测试上传,直接按回车跳过)")
bug_id = input("Bug ID: ").strip()
if not bug_id:
print(f"\n⚠ 跳过上传测试")
return True
# 测试上传
print(f"\n开始测试上传附件到bug {bug_id}...")
result = tapd_api.upload_attachment(
str(test_file),
bug_id,
max_size=attachment_config['max_file_size'] * 1024 * 1024,
upload_timeout=attachment_config['upload_timeout'],
max_retries=attachment_config['upload_retry']
)
if result['success']:
print(f"\n✓ 上传测试成功!")
print(f" 附件ID: {result['attachment_id']}")
return True
else:
print(f"\n✗ 上传测试失败: {result['error_message']}")
return False
except Exception as e:
print(f"\n✗ 测试失败: {e}")
import traceback
traceback.print_exc()
return False
def main():
"""主函数"""
print("=" * 60)
print("附件功能测试")
print("=" * 60)
# 测试1附件处理器
test1_passed = test_attachment_handler()
# 测试2TAPD上传
test2_passed = test_tapd_upload()
# 显示测试结果
print("\n" + "=" * 60)
print("测试结果汇总")
print("=" * 60)
print(f"测试1 - 附件处理器初始化: {'✓ 通过' if test1_passed else '✗ 失败'}")
print(f"测试2 - TAPD附件上传API: {'✓ 通过' if test2_passed else '✗ 失败'}")
print("=" * 60)
if test1_passed and test2_passed:
print("\n✓ 所有测试通过!")
return 0
else:
print("\n✗ 部分测试失败,请检查错误信息")
return 1
if __name__ == "__main__":
sys.exit(main())