Files
Neo-ZQYY/apps/etl/connectors/feiqiu/tests/unit/test_config.py

54 lines
2.0 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# -*- coding: utf-8 -*-
"""配置管理测试"""
import pytest
from config.settings import AppConfig
from config.defaults import DEFAULTS
def test_config_load():
"""测试配置加载"""
config = AppConfig.load({"app": {"store_id": 1}})
assert config.get("app.timezone") == DEFAULTS["app"]["timezone"]
def test_config_override():
"""测试配置覆盖"""
overrides = {
"app": {"store_id": 12345}
}
config = AppConfig.load(overrides)
assert config.get("app.store_id") == 12345
def test_config_get_nested():
"""测试嵌套配置获取"""
config = AppConfig.load({"app": {"store_id": 1}})
assert config.get("db.batch_size") == 1000
assert config.get("nonexistent.key", "default") == "default"
def test_business_day_start_hour_default():
"""默认值 8 应正常加载"""
config = AppConfig.load({"app": {"store_id": 1}})
assert config.get("app.business_day_start_hour") == 8
def test_business_day_start_hour_valid_range():
"""023 范围内的整数应正常加载"""
for h in (0, 12, 23):
config = AppConfig.load({"app": {"store_id": 1, "business_day_start_hour": h}})
assert config.get("app.business_day_start_hour") == h
def test_business_day_start_hour_out_of_range():
"""超出 023 范围应抛出 SystemExit"""
with pytest.raises(SystemExit, match="business_day_start_hour"):
AppConfig.load({"app": {"store_id": 1, "business_day_start_hour": 24}})
with pytest.raises(SystemExit, match="business_day_start_hour"):
AppConfig.load({"app": {"store_id": 1, "business_day_start_hour": -1}})
def test_business_day_start_hour_non_int():
"""非整数类型应抛出 SystemExit"""
with pytest.raises(SystemExit, match="business_day_start_hour"):
AppConfig.load({"app": {"store_id": 1, "business_day_start_hour": "8"}})
with pytest.raises(SystemExit, match="business_day_start_hour"):
AppConfig.load({"app": {"store_id": 1, "business_day_start_hour": 8.0}})