Add multi-database support allowing selection between SQL Server and PostgreSQL via database.active config. Changes include dialect-aware SQL generation, cross-database timestamp functions, PostgreSQL connection URL builder, and psycopg dependency. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
38 lines
1.2 KiB
Python
38 lines
1.2 KiB
Python
import pytest
|
|
from config.settings import load_settings
|
|
|
|
|
|
def test_load_settings_success():
|
|
"""测试成功加载配置文件"""
|
|
settings = load_settings("tests/fixtures/test_config.yaml")
|
|
assert settings.database.active == "sql_server"
|
|
assert settings.database.sql_server.port == 1433
|
|
assert settings.database.sql_server.host == "localhost"
|
|
assert settings.database.sql_server.database == "TestDB"
|
|
|
|
|
|
def test_load_settings_file_not_found():
|
|
"""测试配置文件不存在时抛出异常"""
|
|
with pytest.raises(FileNotFoundError):
|
|
load_settings("nonexistent.yaml")
|
|
|
|
|
|
def test_database_url_property():
|
|
"""测试 database_url 属性生成"""
|
|
settings = load_settings("tests/fixtures/test_config.yaml")
|
|
url = settings.database_url
|
|
assert "mssql+pyodbc" in str(url)
|
|
assert "test_user" in str(url)
|
|
assert "TestDB" in str(url)
|
|
|
|
|
|
def test_postgresql_database_url_property():
|
|
"""测试 PostgreSQL database_url 属性生成"""
|
|
settings = load_settings("tests/fixtures/test_config.yaml")
|
|
settings.database.active = "postgresql"
|
|
url = settings.database_url
|
|
assert url.drivername == "postgresql+psycopg"
|
|
assert url.host == "localhost"
|
|
assert url.port == 5432
|
|
assert url.database == "TestDB"
|