Erotemic/xdoctest
一个运行 Python 文档字符串中示例代码的工具,基于 AST 解析重写了内置 doctest 模块。
- Star
- 221
- Fork
- 18
- 未关闭 Issue
- 29
- 最近提交
- 3天前
这是什么?
Xdoctest 用于执行 doctest,即写在 Python 文档字符串里的示例代码。它是标准库 doctest 模块的重写版本,用基于 Python ast 模块的解析器替代了原来基于正则表达式的解析方式,因此每一行都可以统一使用 >>> 前缀,多行字符串也不需要特殊前缀。
可以通过命令行 xdoctest 指定模块或包路径运行,也可以在 pytest 中加上 --xdoctest 参数启用。原生运行器支持列出所有 doctest、运行全部示例,或按函数名只运行某一个,还能按名字运行无参数函数。解析方面同时支持 Google 风格的 Example 块和自由格式的 >>> 块。
默认的输出比对较为宽松:忽略空白差异,支持 ELLIPSIS 省略匹配,只要标准输出或最终返回值之一匹配即通过。没有 want 语句的测试只需运行不报错即可,因此也可以直接用 assert 做检查。
核心功能
- 01使用 Python ast 模块解析 doctest,而非正则表达式。
- 02每一行都可以加 >>> 前缀,无需区分 PS1 与 PS2 行。
- 03通过 --xdoctest 参数与 pytest 集成。
- 04提供原生命令行工具,可列出、全部运行或单独运行某个 doctest。
- 05同时支持 Google 风格和自由格式的 doctest 解析。
适用场景
- 在 CI 中与单元测试一起运行文档字符串里的用法示例。
- 在代码变更后检查 Python 包的文档示例是否仍能正常运行。
- 开发函数时在文档字符串中编写演示输入,并作为测试复用。
快速上手
- 1
从 PyPI 安装 xdoctest
pip install xdoctest - 2
运行包或模块中的所有 doctest
python -m xdoctest /path/to/your/pkg-or-module.py
使用前须知
- 需要 Python 3.8 或更高版本。
收录于专题
标签
常见问题
- xdoctest 是什么?
- 一个运行 Python 文档字符串中示例代码的工具,基于 AST 解析重写了内置 doctest 模块。 Xdoctest 用于执行 doctest,即写在 Python 文档字符串里的示例代码。它是标准库 doctest 模块的重写版本,用基于 Python ast 模块的解析器替代了原来基于正则表达式的解析方式,因此每一行都可以统一使用 >>> 前缀,多行字符串也不需要特殊前缀。
- xdoctest 可以免费使用吗?用的什么许可证?
- xdoctest 以 Apache-2.0 许可证开源。用于商业产品前,请先确认许可证条款。
- xdoctest 还在维护吗?
- 活跃维护中。xdoctest 最近一次提交是在 2026年11月4日。
- xdoctest 适合用来做什么?
- 在 CI 中与单元测试一起运行文档字符串里的用法示例。 在代码变更后检查 Python 包的文档示例是否仍能正常运行。 开发函数时在文档字符串中编写演示输入,并作为测试复用。
- xdoctest 怎么安装和运行?
- 从 PyPI 安装 xdoctest: pip install xdoctest 运行包或模块中的所有 doctest: python -m xdoctest /path/to/your/pkg-or-module.py
- 在哪里获取 xdoctest?
- 源代码和安装说明在 GitHub 上:https://github.com/Erotemic/xdoctest
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。