test_config_loader.py 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. from hookvision.config_loader import load_config
  2. from hookvision.models import ModuleType, CameraPosition
  3. class TestLoadConfig:
  4. def test_load_rfid_config(self, sample_config_path):
  5. config = load_config(sample_config_path)
  6. assert config.app_name == "测试系统"
  7. assert config.module_type == ModuleType.RFID
  8. assert config.rfid is not None
  9. assert config.rfid.ip == "192.168.1.1"
  10. assert config.rfid.port == 60000
  11. assert config.modbus is None
  12. assert config.ai.enabled is False
  13. def test_load_buckets(self, sample_config_path):
  14. config = load_config(sample_config_path)
  15. assert len(config.buckets) == 1
  16. bucket = config.buckets[0]
  17. assert bucket.id == 1
  18. assert bucket.description == "测试工位"
  19. assert bucket.code_x == "TEST001"
  20. assert len(bucket.cameras) == 2
  21. def test_load_cameras(self, sample_config_path):
  22. config = load_config(sample_config_path)
  23. bucket = config.buckets[0]
  24. left = next(c for c in bucket.cameras if c.position == CameraPosition.LEFT)
  25. right = next(c for c in bucket.cameras if c.position == CameraPosition.RIGHT)
  26. assert left.rtsp_url == "rtsp://test:test@192.168.1.10:554/stream1"
  27. assert left.topic == "test/left"
  28. assert right.rtsp_url == "rtsp://test:test@192.168.1.11:554/stream2"
  29. assert right.topic == "test/right"
  30. def test_load_video_config(self, sample_config_path):
  31. config = load_config(sample_config_path)
  32. assert config.video.rtsp_timeout == 5.0
  33. def test_config_file_not_exists(self, tmp_path):
  34. from configparser import NoSectionError
  35. path = tmp_path / "nonexistent.ini"
  36. import pytest
  37. with pytest.raises(NoSectionError):
  38. load_config(str(path))