test: 按模块重写测试代码,删除旧平铺结构
按"测试规则"重写 tests/:一个模块一个目录、用例按数据→过程→验证三段书写、 不保留全局 conftest.py、测试过程只调用真实生产代码。 结构(73 个文件、30 个模块目录、477 用例): - tests/nodes/ 15 个模块目录(srt/whisper/ass/ffmpeg/frame_extract/vlm/ subtitle_ocr/llm/llm_filter/subtitle_cleanup/subtitle_correction/ proper_nouns/adaptive_pool/vad_profiler/echo); - tests/app/ 11 个模块目录(db/scheduler/batch/maintenance/registry/seed/ storage/config/logging/main/routers 三组 API); - tests/sdk/test_models、tests/web/test_crop、tests/shared(公共设施)。 测试数据随模块目录入库(tests/**/data/),删除根级 testdata/;.gitignore 的 data/ 改为 /data/,否则会连带忽略 tests/**/data/ 导致测试数据无法入库。 顺带发现并修复三个真实缺陷: - nodes/srt.py:相邻条目缺少空行时把下一条时间轴吞进正文(静默错位), 改为正文行遇时间戳行即报错; - src/wov_app/scheduler.py:_file_size 只捕获 OSError,含 \x00 的产物 URI 抛 ValueError 导致任务误判失败,改为同时捕获; - nodes/subtitle_correction.py:生产代码依赖测试包解析 SRT, 改用生产模块 nodes/srt.py。 真实模型/服务集成测试按外部状态跳过:新增 tests/shared/gpu_memory.py (运行时探测显存、CUDA OOM 转跳过)与 tests/shared/llm_service.py (无 Key / 余额 / 限流转跳过)。全量 477 passed。
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
"""公共设施包的 pytest 配置(仅测试进程级隔离,不注册 autouse fixture)。
|
||||
|
||||
由于 `wov_app.config` 在导入时锁定路径常量,这里在 pytest 启动早期把应用
|
||||
数据目录指向进程级临时目录,避免任何测试写入真实 `data/`。该配置属于
|
||||
`tests/shared/` 包本身,不构成"模块测试依赖外部配置":模块目录内的用例
|
||||
如需自己的临时目录,仍在模块 fixture 中用 `env_isolation` 显式创建。
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import atexit
|
||||
|
||||
from tests.shared import env_isolation
|
||||
|
||||
# 进程启动即隔离,保证后续任何 import wov_app.config 都拿到测试路径。
|
||||
_ROOT = env_isolation.configure_environment()
|
||||
|
||||
# 进程退出时清理临时目录。
|
||||
atexit.register(env_isolation.cleanup_data_root, _ROOT)
|
||||
Reference in New Issue
Block a user