根据
standard_timeliness_new.md文档生成 文件位置:utils_test/standard_new_Test/test_standard_matching_rules.py
| 类别 | 测试数量 | 说明 |
|---|---|---|
| 情况1-正常(OK) | 5 | 名称+标准号都匹配,现行/试行 |
| 情况2-被替代(SUBSTITUTED) | 2 | 名称+标准号都匹配,废止,有现行替代 |
| 情况3-废止无替代(ABOLISHED) | 3 | 名称+标准号都匹配,废止,无替代 |
| 情况4-不匹配(MISMATCH) | 6 | 名称或标准号只有一个匹配,现行状态 |
| 情况5-不存在(NOT_FOUND) | 3 | 名称和标准号都不匹配 |
| 边界情况 | 5 | 特殊场景测试 |
| 批量测试 | 1 | 混合场景批量验证 |
| 总计 | 25 |
测试类: TestCaseOK
| 编号 | 测试名称 | 输入标准名称 | 输入标准号 | 库中状态 | 预期结果 |
|---|---|---|---|---|---|
| TC-OK-01 | 基本匹配 | 铁路桥涵设计规范 | TB 10002-2017 | XH | OK |
| TC-OK-02 | 输入带书名号 | 《铁路桥涵设计规范》 | TB 10002-2017 | XH | OK |
| TC-OK-03 | 试行状态 | 混凝土结构耐久性设计标准 | GB/T 50476-2019 | SX | OK |
| TC-OK-04 | 带空格名称 | 铁路混凝土工程施工质量验收标准 | TB 10424-2018 | XH | OK |
| TC-OK-05 | 库中带书名号 | 铁路工程抗震设计规范 | GB 50111-2006 | XH | OK |
验证规则:
测试类: TestCaseSubstituted
| 编号 | 测试名称 | 输入标准名称 | 输入标准号 | 库中状态 | 替代标准 | 预期结果 |
|---|---|---|---|---|---|---|
| TC-SUB-01 | 单条替代 | 起重机 钢丝绳 保养、维护、检验和报废 | GB/T 5972-2016 | FZ→XH | GB/T 5972-2023 | SUBSTITUTED |
| TC-SUB-02 | 带书名号输入 | 《起重机 钢丝绳 保养、维护、检验和报废》 | GB/T 5972-2016 | FZ→XH | GB/T 5972-2023 | SUBSTITUTED |
验证规则:
测试类: TestCaseAbolished
| 编号 | 测试名称 | 输入标准名称 | 输入标准号 | 库中状态 | 是否有替代 | 预期结果 |
|---|---|---|---|---|---|---|
| TC-ABOL-01 | 缆索起重机 | 缆索起重机 | GB/T 28756-2012 | FZ | 无 | ABOLISHED |
| TC-ABOL-02 | 电力高处作业防坠器 | 电力高处作业防坠器 | DL/T 1147-2009 | FZ | 无 | ABOLISHED |
| TC-ABOL-03 | 多版本废止 | 旧版施工规范 | TB 10001-2000 | FZ(多个) | 无 | ABOLISHED |
验证规则:
测试类: TestCaseMismatch
| 编号 | 测试名称 | 输入标准名称 | 输入标准号 | 库中匹配记录 | 预期结果 |
|---|---|---|---|---|---|
| TC-MIS-01 | 年份不匹配 | 公路水运危险性较大工程专项施工方案编制审查规程 | JT/T 1495-2023 | 名称同, JT/T 1495-2024 XH | MISMATCH |
| TC-MIS-02 | 带书名号年份不匹配 | 《公路水运危险性较大工程专项施工方案编制审查规程》 | JT/T 1495-2023 | 名称同, JT/T 1495-2024 XH | MISMATCH |
| TC-MIS-03 | 名称匹配年份错误 | 铁路桥涵设计规范 | TB 10002-2020 | 名称同, TB 10002-2017 XH | MISMATCH |
| TC-MIS-04 | 前缀匹配名称模糊 | 钢结构设计标准 | GB 50017-2010 | 钢结构设计标准, GB 50017-2017 XH | MISMATCH/NOT_FOUND |
| TC-MIS-05 | 标准号匹配名称不匹配(现行) | 铁路桥涵设计 | TB 10002-2017 | 铁路桥涵设计规范, TB 10002-2017 XH | MISMATCH |
| TC-MIS-06 | 标准号匹配名称不匹配(废止) | 某个错误名称 | GB/T 28756-2012 | 缆索起重机, GB/T 28756-2012 FZ | ABOLISHED |
验证规则:
测试类: TestCaseNotFound
| 编号 | 测试名称 | 输入标准名称 | 输入标准号 | 库中是否存在 | 预期结果 |
|---|---|---|---|---|---|
| TC-NF-01 | 完全不存在 | 完全不存在的标准名称 | GB/T 99999-9999 | 不存在 | NOT_FOUND |
| TC-NF-02 | 格式正确但不存在 | 某个规范 | TB 88888-2099 | 不存在 | NOT_FOUND |
| TC-NF-03 | 名称部分相似 | 桥涵设计 | TB 10002-2017 | 不匹配 | NOT_FOUND/MISMATCH |
验证规则:
测试类: TestCaseEdgeCases
| 编号 | 测试名称 | 输入 | 说明 | 预期结果 |
|---|---|---|---|---|
| TC-EDGE-01 | 多版本选择最新 | 多版本标准测试, GB/T 99999-2015 | 库中有2015(FZ), 2020(XH), 2023(XH) | SUBSTITUTED, 返回2023版 |
| TC-EDGE-02 | 空标准号 | 无标准号规范, "" | 仅按名称查询 | MISMATCH/NOT_FOUND |
| TC-EDGE-03 | 特殊字符 | 《特殊(字符)》规范, Q/CR 9001-2020 | 名称含特殊字符 | OK |
| TC-EDGE-04 | 全角空格 | 铁路桥涵 设计规范, TB 10002-2017 | 名称含全角空格 | OK |
| TC-EDGE-05 | 空名称 | "", TB 10002-2017 | 名称为空字符串 | NOT_FOUND/MISMATCH |
测试类: TestCaseBatch
| 编号 | 测试名称 | 输入列表 | 预期结果 |
|---|---|---|---|
| TC-BATCH-01 | 混合标准批量测试 | [OK, SUBSTITUTED, ABOLISHED, MISMATCH, NOT_FOUND] | 按顺序返回对应状态码 |
验证规则:
def build_mock_data():
return [
# 情况1: 正常
{"id": 1, "standard_name": "铁路桥涵设计规范", "standard_number": "TB 10002-2017", "validity": "XH"},
{"id": 2, "standard_name": "《铁路工程抗震设计规范》", "standard_number": "GB 50111-2006", "validity": "XH"},
{"id": 3, "standard_name": "混凝土结构耐久性设计标准", "standard_number": "GB/T 50476-2019", "validity": "SX"},
{"id": 4, "standard_name": "铁路混凝土工程施工质量验收标准", "standard_number": "TB 10424-2018", "validity": "XH"},
# 情况2: 被替代
{"id": 5, "standard_name": "起重机 钢丝绳 保养、维护、检验和报废", "standard_number": "GB/T 5972-2016", "validity": "FZ"},
{"id": 6, "standard_name": "起重机 钢丝绳 保养、维护、检验和报废", "standard_number": "GB/T 5972-2023", "validity": "XH"},
# 情况3: 废止无替代
{"id": 7, "standard_name": "缆索起重机", "standard_number": "GB/T 28756-2012", "validity": "FZ"},
{"id": 8, "standard_name": "电力高处作业防坠器", "standard_number": "DL/T 1147-2009", "validity": "FZ"},
{"id": 9, "standard_name": "旧版施工规范", "standard_number": "TB 10001-2000", "validity": "FZ"},
{"id": 10, "standard_name": "旧版施工规范", "standard_number": "TB 10001-2005", "validity": "FZ"},
# 情况4: 不匹配
{"id": 11, "standard_name": "公路水运危险性较大工程专项施工方案编制审查规程", "standard_number": "JT/T 1495-2024", "validity": "XH"},
{"id": 12, "standard_name": "建筑地基基础设计规范", "standard_number": "GB 50007-2011", "validity": "XH"},
{"id": 13, "standard_name": "钢结构设计标准", "standard_number": "GB 50017-2017", "validity": "XH"},
# 边界: 多版本
{"id": 14, "standard_name": "多版本标准测试", "standard_number": "GB/T 99999-2015", "validity": "FZ"},
{"id": 15, "standard_name": "多版本标准测试", "standard_number": "GB/T 99999-2020", "validity": "XH"},
{"id": 16, "standard_name": "多版本标准测试", "standard_number": "GB/T 99999-2023", "validity": "XH"},
# 边界: 其他
{"id": 17, "standard_name": "无标准号规范", "standard_number": "DB 51/T 9999-2020", "validity": "XH"},
{"id": 18, "standard_name": "《特殊(字符)》规范", "standard_number": "Q/CR 9001-2020", "validity": "XH"},
]
# 运行所有测试
cd utils_test/standard_new_Test
python -m pytest test_standard_matching_rules.py -v
# 运行特定类别的测试
python -m pytest test_standard_matching_rules.py::TestCaseOK -v
python -m pytest test_standard_matching_rules.py::TestCaseSubstituted -v
python -m pytest test_standard_matching_rules.py::TestCaseMismatch -v
# 生成HTML报告
python -m pytest test_standard_matching_rules.py --html=report.html
| 状态码 | 说明 | 消息格式 |
|---|---|---|
| OK | 正常 | 无问题 |
| SUBSTITUTED | 被替代 | 《标准》(号)已废止,替代《标准》(号) |
| ABOLISHED | 废止无现行 | 《标准》(号)已废止,无现行状态 |
| MISMATCH | 不匹配 | 《提取》(号)与 实际《标准》(号)不匹配 |
| NOT_FOUND | 不存在 | 《标准》(号)标准库不存在,请确认 |
开始
│
├─► 标准号精确匹配?
│ │
│ ├─► 是 ► 名称匹配?
│ │ │
│ │ ├─► 是 ► 时效性检查
│ │ │ │
│ │ │ ├─► 现行/试行 ► OK
│ │ │ └─► 废止 ► 查找替代 ► 有则SUBSTITUTED, 无则ABOLISHED
│ │ │
│ │ └─► 否 ► 名称模糊匹配?
│ │ │
│ │ ├─► 是 ► 时效性检查 ► MISMATCH(现行) 或 废止处理
│ │ └─► 否 ► NOT_FOUND
│ │
│ └─► 否 ► 标准号模糊匹配?
│ │
│ ├─► 是 ► 名称匹配?
│ │ │
│ │ ├─► 是 ► 时效性检查 ► MISMATCH(现行) 或 废止处理
│ │ └─► 否 ► NOT_FOUND
│ │
│ └─► 否 ► 名称模糊匹配?
│ │
│ ├─► 是 ► 名称精确匹配?
│ │ │
│ │ ├─► 是 ► 时效性检查 ► MISMATCH(现行) 或 NOT_FOUND(废止)
│ │ └─► 否 ► NOT_FOUND
│ │
│ └─► 否 ► NOT_FOUND
文档生成时间: 2026-03-30 配套代码: test_standard_matching_rules.py