test.py
"""
AI Quant 项目测试程序
"""
import sys
import os
import logging
import unittest
# 添加项目根目录到路径
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
# 配置日志
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
handlers=[
logging.FileHandler("aiquant_test.log"),
logging.StreamHandler()
]
)
logger = logging.getLogger("AIQuant.test")
def run_tests(test_file: str = None):
"""
运行项目测试
Args:
test_file: 测试文件路径(可选)
Returns:
测试结果
"""
logger.info("启动 AI Quant 项目测试")
try:
# 创建测试套件
if test_file:
suite = unittest.TestLoader().discover(
os.path.dirname(os.path.abspath(test_file)),
os.path.basename(test_file)
)
else:
suite = unittest.TestLoader().discover(
os.path.join(os.path.dirname(os.path.dirname(
os.path.abspath(__file__))), "..", "script"),
"test_*.py"
)
# 运行测试
runner = unittest.TextTestRunner(verbosity=2)
result = runner.run(suite)
if result.wasSuccessful():
logger.info("所有测试成功通过")
return 0
else:
logger.error(
f"测试失败: {len(result.failures)} 个失败, {len(result.errors)} 个错误")
return 1
except Exception as e:
logger.error(f"测试过程中出错: {e}")
logger.exception("详细错误信息:")
return 2
if __name__ == "__main__":
import argparse
# 解析命令行参数
parser = argparse.ArgumentParser(
description="AI Quant 项目测试程序"
)
parser.add_argument(
"--test-file",
help="指定测试文件路径"
)
args = parser.parse_args()
# 运行测试
sys.exit(run_tests(args.test_file))