Files
Train/app/tests/test_field_dict.py
T
2026-06-16 00:55:20 +08:00

45 lines
1.5 KiB
Python

"""字段字典/映射单元测试 — 对应 T-1.1 UT。"""
import os
import sys
import unittest
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))
from app.etl import field_dict as fd
class TestHeaderMapping(unittest.TestCase):
def test_basic(self):
self.assertEqual(fd.map_header("型号"), "model_code")
self.assertEqual(fd.map_header("车号"), "car_number")
self.assertEqual(fd.map_header("系列"), "series")
def test_with_spaces_and_newlines(self):
self.assertEqual(fd.map_header("车体长度 /mm"), "length")
self.assertEqual(fd.map_header("牵引力 (起动)/kN"), "tractive_start")
self.assertEqual(fd.map_header("最高运营时速"), "max_speed")
def test_unknown(self):
self.assertIsNone(fd.map_header("不存在的列"))
def test_normalize(self):
self.assertEqual(fd.normalize_header("车体长度 /mm"), "车体长度/mm")
self.assertEqual(fd.normalize_header("\n"), "东风")
class TestConfig(unittest.TestCase):
def test_all_12_sheets_configured(self):
self.assertEqual(len(fd.CATEGORY_CONFIG), 12)
def test_grain_values(self):
for cfg in fd.CATEGORY_CONFIG.values():
self.assertIn(cfg["grain"], ("model", "unit"))
def test_numeric_fields_have_synonyms(self):
for field in fd.NUMERIC_UNIT_FIELDS:
self.assertIn(field, fd.FIELD_SYNONYMS, field)
if __name__ == "__main__":
unittest.main()