新闻中心
python中doctest如何嵌入源码?
doctest通过在文档字符串中嵌入交互式示例来测试代码,使用>>>表示输入和期望输出,运行方式包括在模块中调用doctest.testmod()或命令行执行python -m doctest,支持多行输出、异常处理及模糊匹配,适用于函数、类和模块的docstring,确保文档与代码一致性。

在Python中,doctest通过将测试用例写在函数、类或模块的文档字符串(docstring)中来嵌入源码。这些测试看起来就像在交互式Python解释器中的输入输出,doctest会自动提取并运行它们。
基本格式:
在三引号的文档字符串里,使用表示输入
,后接期望的输出。例如:
def add(a, b):
"""
返回两个数的和。
>>> add(2, 3)
5
>>> add(-1, 1)
0
"""
return a + b如何运行嵌入的doctest?
方法一:在代码末尾添加以下内容,直接运行模块:
if __name__ == "__main__":
import doctest
doctest.testmod()保存为 calc.py 后,在命令行执行:python calc.py —— 如果没有输出,说明所有测试通过。
加上 -v 参数可查看详细过程:python calc.py -v
方法二:从命令行单独运行doctest:
python -m doctest calc.py python -m doctest -v calc.py # 显示详情
支持多行输出与异常测试
doctest能处理复杂场景,比如多行返回值或异常:
码上飞
码上飞(CodeFlying) 是一款AI自动化开发平台,通过自然语言描述即可自动生成完整应用程序。
430
查看详情
def divide(a, b):
"""
执行除法,b为0时抛出异常。
>>> divide(6, 2)
3.0
>>> divide(1, 3) # doctest: +ELLIPSIS
0.33...
>>> divide(1, 0) # doctest: +IGNORE_EXCEPTION_DETAIL
Traceback (most recent call last):
ZeroDivisionError: division by zero
"""
return a / b- 使用
# doctest: +ELLIPSIS可模糊匹配部分输出。 -
# doctest: +IGNORE_EXCEPTION_DETAIL忽略异常类型的细节,只检查是否抛出指定异常。
适用位置灵活
doctest可嵌入:
- 函数的 docstring
- 类的 docstring
- 模块的 docstring(文件开头)
只要包含符合格式的交互示例,都能被识别和执行。
基本上就这些。把测试写进文档,既保证了文档的准确性,又实现了轻量级测试。
以上就是python中doctest如何嵌入源码?的详细内容,更多请关注其它相关文章!
# 都能
# 临汾seo优化怎么样
# 网络营销推广指标
# 烟台营销推广机构排名榜
# 望城区广告营销推广公司
# 武昌网站建设制作
# seo优化整合
# 抖音seo矩阵源码下载
# 化工网站建设维护
# 网站设计建设专家名单表
# 网站线上推广运营怎么做
# 相关文章
# 适用于
# doctest
# 行输出
# 就像
# 自然语言
# 抛出
# 命令行
# 如何使用
# 文档
# string类
# ai
# python
# 嵌入源码
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
荒野行动PC版怎么注册_荒野行动PC版账号注册详细流程图文教程
Golang如何使用bytes.Split分割字节切片_Golang bytes切片分割方法
J*aScript map 方法中处理循环元素为空数组的策略
QQ邮箱登录平台入口 QQ邮箱网页版邮箱官方入口
Yandex搜索引擎官网入口_俄罗斯Yandex免登录一键直达
如何使 Jest 模拟函数默认抛出错误以提高测试效率
聚水潭ERP登录页面入口 聚水潭ERP官网登录界面
谷歌浏览器如何快速清除某个网站的数据_Chrome网站缓存清理方法
我的世界官方游戏入口 我的世界官网平台直达链接
J*aScript类型检查_j*ascript代码规范
J*a递归快速排序中静态变量导致数据累积问题的解决方案
如何高效处理PHP中的Excel数据导入导出?PortPHP/Spreadsheet助你轻松搞定!
CSS子选择器:如何区分并样式化嵌套列表的子层级
TikTok国际版官网直达_TikTok国际版官网直达进入在线观看
LINQ to XML为何解析失败? 深入理解C# XDocument的异常处理
中兴BladeV30怎样用测距估书架层高_iPhone中兴BladeV30测距估书架层高【家装参考】
css子元素高度不一致导致布局错位怎么办_使用align-items:stretch解决高度差异
离线运行Go语言之旅:本地部署与GOPATH配置指南
qq音乐在线播放入口_qq音乐电脑版登录链接
单12V-2×6实现为RTX 5090供电750W!甚至都没敢跑分
Lar*el表单中优雅地处理“返回”按钮以规避验证:最佳实践指南
解决Python单元测试中Mock异常方法调用计数为零的问题
探索高级语言到C/C++的转译路径:以Go为例及内存管理策略
抓大鹅无需下载版 抓大鹅秒玩版入口
如何在 Excel Online 和 Google 表格中更改日期格式
J*a应用集成GitHub CLI与API认证指南
抖音网页版平台入口 抖音网页版官网在线访问教程
PHP表单数据传递:如何通过隐藏输入字段获取动态ID
将JSON对象数组转置为键值对列表的实用指南
QQ邮箱网页版入口登录 QQ邮箱在线邮箱官方通道
知音漫客官网漫画下载_知音漫客网页版阅读记录
响应式容器内容自动缩放与宽高比维持教程
品牌机怎么重装系统 联想/戴尔/惠普笔记本恢复出厂系统教程
魅族20怎样在浏览器开无图省流_iPhone魅族20浏览器开无图省流【流量节省】
EMS快递官网app_中国邮政速递物流手机客户端
必由学官网快捷入口 必由学网页版在线学习平台
在J*a项目里如何构建对象之间的契约_接口约束的实际落地
steam官方网页快速访问 steam账号注册全流程
Win11文件资源管理器卡顿怎么修 Win11重置资源管理器进程优化响应速度【修复方法】
可靠CSGO开箱平台解析 CSGO开箱网合集
J*aScriptWebpack优化_J*aScript构建工具实战
J*a 递归快速排序中静态变量的状态管理与陷阱
MinIO大规模对象列表性能瓶颈深度解析与外部元数据管理策略
Log4j Console Appender性能瓶颈与高并发优化策略
邮政编码查询不到怎么办_邮政编码查询不到的常见原因与对策
Go语言中对Map值调用带指针接收者方法:原理与最佳实践
html网页设计源代码怎么运行_运行html网页设计源代码步骤【指南】
vivo浏览器怎么扫描二维码 vivo浏览器内置扫一扫功能使用方法
在Runstone环境中高效处理TasteDive API的JSON数据
sublime如何配置Python开发环境_将sublime打造成轻量级Python IDE


2025-12-02
浏览次数:次
返回列表