"""字段字典/映射单元测试 — 对应 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()