muse-agent-example/tests/集成/test_数据库连接与迁移.py
zizi 713cc45c63 重构(数据库): 迁移链压扁为单基线并精简测试至保留集
- 51 个增量迁移文件压扁为 V0001__基线.sql 完整快照(结构+种子+授权),
  等价门禁:旧链全量执行库与基线库 pg_dump 逐字节一致
- 剔除 pg_dump 固化的 public schema 超级用户归属断言(muse_maint 无权执行)
- 测试删减至保留集:备份往返 2 + 预算 2 + 租约 2 + 基线建库 1
- 租约/预算夹具改共享库,消除按例克隆建库
- 修复共享库三类既有污染:账本注入残留(系统管理)、失败触发器残留(评测)、
  建表残留(正式变更事务),发布包迁移文件名硬编码改动态核对
- 全量数据库验收 722 passed / 0 failed / 0 errors(main 基线为 24F+291E)
- 运行手册登记基线模式改表流程与账本校验和同步
2026-09-22 10:18:51 +08:00

44 lines
1.6 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.

"""基线建库的最小验证:空库执行基线后账本登记且业务角色可连。"""
from collections.abc import Iterator
from pathlib import Path
import pytest
from muse.共享.调用身份 import 用途
from muse.基础设施.数据库.迁移 import 列出迁移, 已应用版本
from muse.基础设施.数据库.连接 import 数据库引用, 连接
pytestmark = pytest.mark.数据库
@pytest.fixture
def 临时库(空测试库) -> Iterator[dict[用途, 数据库引用]]:
yield 空测试库
@pytest.mark.case_id(
"TC-base-0001",
environment="隔离PG",
given="全新空库与包内基线 SQL",
when="以维护用途执行基线迁移",
then=["账本登记基线版本,生产角色可连接并读取结构"],
)
def test_空库执行基线登记账本且业务角色可连__base001(临时库) -> None:
# 空测试库不预执行 DDL;在本用例内从零执行基线并验证账本与角色连接。
维护 = 连接(临时库[用途.维护].引用, 用途标记=用途.维护)
with 维护 as 连:
from muse.基础设施.数据库.迁移 import 执行迁移
执行迁移(连, Path("数据库/迁移"))
项 = 列出迁移()
assert [i.版本 for i in 项] == [1]
assert 已应用版本(连) == {1: 项[0].校验和}
生产 = 连接(临时库[用途.生产].引用, 用途标记=用途.生产)
with 生产 as 连:
表数 = 连.execute(
"SELECT count(*) FROM information_schema.tables "
"WHERE table_schema = 'public' AND table_name LIKE 'muse_%'"
).fetchone()[0]
assert 表数 > 30, "基线应建出完整的业务表集合"