mystx 主题单元测试用例清单(54 项)#
一句话摘要:本清单完整索引
mystxSphinx 主题(d:\spaces\SpecWeave\playground\books\libs\mystx)测试套件的全部 54 项单元测试,按测试文件、被测模块、断言要点与 Spec 要求组织,并给出运行方式与维护约定(命名规范、覆盖率门槛、Python 3.14 特性「诚实记录」原则),作为团队后续维护的索引。
一、概览#
测试文件 |
覆盖模块 |
用例数 |
对应 Spec 要求 |
|---|---|---|---|
|
|
11 |
指令 URL 构建 / HTML 节点 / |
|
|
18 |
配置加载 / 合并 / thebe / config-inited |
|
|
3 |
主题目录解析 / slots 内存 |
|
|
5 |
版本匹配推导 / RTD 资产注入 |
|
|
4 |
myst_nb 惰性加载 |
|
跨模块(Python 3.14 新特性) |
13 |
annotationlib / field(doc=) / traceback / sys.monitoring |
合计 |
全量 |
54 |
语句覆盖率 97%(基线 ≥80%) |
二、运行方式#
# 需先准备依赖:将 sphinx 复制到 _tmp_sphinx(见 run_tests.py)
$env:PYTHONPATH = "_tmp_sphinx;src"
python -m pytest tests --cov=mystx --cov-report=term-missing
注意:
pytest退出码可能因沙箱限制 coverage 写入站点包__pycache__而为 1,但输出54 passed即为全部通过;需 HTML 报告可追加--cov-report=html。
三、详细用例清单#
3.1 GitHub Readme Stats 指令(11 项)#
文件:unit/test_github_cards.py
用例 |
被测目标 |
断言要点 |
|---|---|---|
|
|
常规键值正确拼接进 URL |
|
|
空值 / None 键被省略 |
|
|
生成 |
|
|
返回单节点,username/theme/show_icons/hide 正确 |
|
|
|
|
|
|
|
|
缺必填项触发 reporter.error |
|
|
|
|
|
|
|
|
|
|
|
注册 4 条指令, |
3.2 ConfigManager 配置加载与合并(18 项)#
文件:unit/test_config.py
加载 load_custom_config
用例 |
断言要点 |
|---|---|
|
无文件返回 |
|
返回解析后字典 |
|
抛 |
|
非 TOML 异常走 |
合并 _merge_html_theme_options
用例 |
断言要点 |
|---|---|
|
标量值被写入 |
|
嵌套键深度合并、已有键不覆盖 |
|
无 |
|
目标属性缺失时自动创建 |
应用 apply_config
用例 |
断言要点 |
|---|---|
|
有配置时合并成功 |
|
无配置时提前返回 |
slots 内存优化
用例 |
断言要点 |
|---|---|
|
实例无 |
|
|
thebe 集成 thebe_setup
用例 |
断言要点 |
|---|---|
|
开启 thebe 并 |
|
|
|
已存在时不重复注册 |
config-inited 事件 config_inited_handler
用例 |
断言要点 |
|---|---|
|
无特性时不注册扩展 |
|
|
|
运行时异常向上传播 |
3.3 MySTX 主题解析(3 项)#
文件:unit/test_theme.py
用例 |
断言要点 |
|---|---|
|
解析到 |
|
slots 启用,无 |
|
目录不存在抛 |
3.4 版本切换器(5 项)#
文件:unit/test_version_switcher.py
用例 |
断言要点 |
|---|---|
|
稳定版匹配 |
|
|
|
RTD |
|
注入 |
|
本地开发注入 RTD CSS / JS |
3.5 可选依赖 myst_nb 加载(4 项)#
文件:unit/test_import_fallback.py
用例 |
断言要点 |
|---|---|
|
缺 |
|
已安装时调用 |
|
|
|
|
3.6 Python 3.14 标准库新特性(13 项)#
文件:unit/test_python314_features.py
annotationlib(7 项)
用例 |
断言要点 |
|---|---|
|
注解键集合正确 |
|
|
|
|
|
|
|
|
|
每次返回新字典 |
|
|
dataclasses.field(doc=)(2 项)
用例 |
断言要点 |
|---|---|
|
|
|
mystx 字段以版本无关方式内省 doc(默认 |
traceback(2 项)
用例 |
断言要点 |
|---|---|
|
异常链保留、 |
|
渲染输出含类型与调用位置 |
sys.monitoring(2 项)
用例 |
断言要点 |
|---|---|
|
目标函数 |
|
局部事件仅作用于目标代码对象 |
四、维护约定#
同步更新:新增 / 删除 / 重命名测试后,须同步更新本清单对应条目与「概览」数量(源文件位于
playground/books/libs/mystx/tests/README.md,与本笔记保持双向一致)。命名规范:继续遵循
test_<被测函数>_<场景>命名;Python 3.14 特性用例沿用@annotationlib_skip/@py314_skip装饰器做版本守卫。覆盖率门槛:
src/mystx核心逻辑语句覆盖率不低于 80%(当前 97%)。剩余未覆盖的 6 行(config.py:110/168-169、theme.py:55-57)为极端异常兜底路径,可暂不补齐。新增 Python 3.14 特性:按 Spec「诚实记录」原则,仅在 mystx 代码有实际落点时才新增对应测试,不为凑齐模块而强行引入无收益用例。相关落点评估见 14-mystx-optimization-mapping,优化前后量化对比见 15-mystx-optimization-report。