| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- """
- 测试用户提供的4个标准规范
- 验证模糊名称匹配修复是否有效
- """
- import asyncio
- import sys
- import os
- # 添加项目根目录到 Python 路径
- current_dir = os.path.dirname(os.path.abspath(__file__))
- project_root = os.path.dirname(os.path.dirname(current_dir))
- if project_root not in sys.path:
- sys.path.insert(0, project_root)
- from utils_test.standard_new_Test.standard_service import (
- StandardMatchingService,
- MatchResultCode
- )
- async def test_user_standards():
- """测试用户提供的4个标准"""
- # 初始化服务(使用Mock数据)
- service = StandardMatchingService(db_pool=None)
- await service.initialize()
- # 用户提供的4个标准
- test_standards = [
- {"standard_name": "铁路桥涵设计规范", "standard_number": "TB 10002-2017"},
- {"standard_name": "铁路工程抗震设计规范", "standard_number": "GB 50111-2006"},
- {"standard_name": "铁路混凝土工程施工质量验收标准", "standard_number": "TB 10424-2018"},
- {"standard_name": "公路水运危险性较大工程专项施工方案编制审查规程", "standard_number": "JT/T 1495-2023"},
- ]
- print("=" * 80)
- print("测试用户提供的4个标准(使用Mock数据)")
- print("=" * 80)
- results = service.check_standards(test_standards)
- all_passed = True
- for i, result in enumerate(results, 1):
- print(f"\n【{i}】{result.original_name}")
- print(f" 标准号: {result.original_number}")
- print(f" 状态码: {result.status_code}")
- print(f" 处理结果: {result.process_result}")
- print(f" 最终结果: {result.final_result}")
- # 验证预期结果
- if i <= 3:
- # 前3个应该是 OK
- if result.status_code != MatchResultCode.OK.value:
- print(f" [失败] 期望 OK,实际 {result.status_code}")
- all_passed = False
- else:
- print(f" [通过]")
- else:
- # 第4个应该是 MISMATCH(因为Mock数据中是2024版)
- if result.status_code != MatchResultCode.MISMATCH.value:
- print(f" [失败] 期望 MISMATCH,实际 {result.status_code}")
- all_passed = False
- else:
- print(f" [通过]")
- print("\n" + "=" * 80)
- if all_passed:
- print("[成功] 所有测试通过!")
- else:
- print("[失败] 部分测试失败!")
- print("=" * 80)
- return all_passed
- def test_with_bookname_variations():
- """测试书名号变体"""
- from utils_test.standard_new_Test.standard_service import StandardRepository, StandardMatcher
- print("\n" + "=" * 80)
- print("测试书名号变体匹配")
- print("=" * 80)
- # 创建仓库并加载测试数据
- repo = StandardRepository()
- mock_data = [
- {"id": 1, "standard_name": "铁路桥涵设计规范", "standard_number": "TB 10002-2017", "validity": "XH"},
- ]
- repo.load_data(mock_data)
- matcher = StandardMatcher(repo)
- # 测试各种名称变体
- test_cases = [
- ("铁路桥涵设计规范", "TB 10002-2017", "无书名号"),
- ("《铁路桥涵设计规范》", "TB 10002-2017", "带书名号"),
- ("铁路桥涵 设计规范", "TB 10002-2017", "带空格"),
- ("《铁路桥涵 设计规范》", "TB 10002-2017", "带书名号和空格"),
- ]
- all_passed = True
- for name, number, desc in test_cases:
- result = matcher.match(1, name, number)
- status = "[OK]" if result.status_code == MatchResultCode.OK.value else "[FAIL]"
- print(f"\n{status} {desc}")
- print(f" 输入名称: {name}")
- print(f" 结果: {result.status_code}")
- if result.status_code != MatchResultCode.OK.value:
- all_passed = False
- return all_passed
- if __name__ == "__main__":
- # 运行异步测试
- result1 = asyncio.run(test_user_standards())
- # 运行书名号变体测试
- result2 = test_with_bookname_variations()
- print("\n" + "=" * 80)
- if result1 and result2:
- print("[成功] 所有测试通过!修复成功。")
- sys.exit(0)
- else:
- print("[警告] 部分测试失败!")
- sys.exit(1)
|