45 lines
1.5 KiB
Python
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()
|