Python doctest 是否消除了单元测试的需要?

2023-12-19

我所在项目的一位开发人员同事认为文档测试与单元测试一样好,并且如果一段代码经过文档测试,则不需要进行单元测试。我不相信情况是这样。任何人都可以提供一些可靠的、理想引用的例子来支持或反对文档测试取代单元测试需求的论点吗?

谢谢 -丹尼尔

编辑:任何人都可以提供参考,表明文档测试不应取代单元测试吗?


我(滥用)使用过doctest替代unittest,当我开始我的gmpy http://code.google.com/p/gmpy/许多年前的项目——您可以浏览其源代码,并看到所有功能都经过 doctests 彻底测试(该功能由 C 编码的 Python 扩展提供,上次我对其进行覆盖率测量时,覆盖率超过 95%) 。我为什么这么做?因为doctest是全新的,一如既往gmpy,我很好奇我能把它推到什么程度。

答案:确实很远——但绝对不值得(新鲜感逐渐消失,但你不想重写所有测试,这就是为什么 gmpy 的测试仍然是全文档测试)。文档测试极其脆弱,即使消息中最微小的拼写错误修正也会破坏测试,当它们被这样滥用时,这确实是一个麻烦。这有点像传统的集成测试,基于将输出与“黄金”(已知良好)的预期输出进行比较:第一次很容易编写,但在修复无缘无故的测试中断几年后,您会在闲暇时后悔;- )。

如果你发现unittest的风格繁重,还有其他优秀的替代品仍在meant用于单元测试,例如py.test http://codespeak.net/py/dist/test/ and nose http://code.google.com/p/python-nose/ -- doctest实际上是为了不同的目的(支持文档,而不是通用单元测试),当然值得添加您编写的任何文档测试出于文档目的到你的测试电池,它是not值得头痛的测试维护替换用它进行单元测试。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python doctest 是否消除了单元测试的需要? 的相关文章

  • 为什么我不能导入 geopandas?

    我唯一的代码行是 import geopandas 它给了我错误 OSError Could not find libspatialindex c library file 以前有人遇到过这个吗 我的脚本运行得很好 直到出现此错误 请注意
  • 替换字符串列表中的 \x00 的最佳方法?

    我有一个来自已解析 PE 文件的值列表 其中包括 x00每个部分末尾的空字节 我希望能够删除 x00字符串中的字节而不删除所有字节 x 文件中的 s 我试过做 replace and re sub 但并没有取得太大成功 使用Python 2
  • 如何使用pycaffe重构caffe网络

    我想要的是 加载网络后 我将分解一些特定的图层并保存新的网络 例如 原网 数据 gt conv1 gt conv2 gt fc1 gt fc2 gt softmax New net 数据 gt conv1 1 gt conv1 2 gt c
  • 使用 Django 的 post_save() 信号

    我有两张桌子 class Advertisement models Model created at models DateTimeField auto now add True author email models EmailField
  • Dask DataFrame 的逐行处理

    我需要处理一个大文件并更改一些值 我想做这样的事情 for index row in dataFrame iterrows foo doSomeStuffWith row lol doOtherStuffWith row dataFrame
  • 无法包含外部 pandas 文档 Pycharm v--2018.1.2

    我无法包含外部 pandas 文档Pycharm v 2018 1 2 例如 numpy gt http docs scipy org doc numpy reference generated module name element na
  • python中函数变量的作用域

    假设我们有两个函数 def ftpConnect ftp FTP server ftp login ftp cwd path def getFileList ftpConnect files ftp nlst print files 如果我
  • 如何在 Windows 上使用 Python 3.6 来安装 Python 2.7

    我想问一下如何使用pip install对于 Python 2 7 当我之前安装并使用 Python 3 6 时 我现在必须使用 Windows 上的 Python 版本 pip install 继续安装 Python 3 6 我需要使用以
  • Pandas:根据列名进行列的成对乘法

    我有以下数据框 gt gt gt df pd DataFrame ap1 X 1 2 3 4 as1 X 1 2 3 4 ap2 X 2 2 2 2 as2 X 3 3 3 3 gt gt gt df ap1 X as1 X ap2 X a
  • Python unicode 字符代码?

    有没有办法将 Unicode 字符 插入 Python 3 中的字符串 例如 gt gt gt import unicode gt gt gt string This is a full block s unicode charcode U
  • FastText - 由于 C++ 扩展未能分配内存,无法加载 model.bin

    我正在尝试使用 FastText Python APIhttps pypi python org pypi fasttext https pypi python org pypi fasttext虽然 据我所知 此 API 无法加载较新的
  • 在 pip.conf 中指定多个可信主机

    这是我尝试在我的中设置的 etc pip conf global trusted host pypi org files pythonhosted org 但是 它无法正常工作 参考 https pip pypa io en stable
  • 在pycharm中调试python代码

    这个问题类似于this https stackoverflow com questions 10240018 how to use pycharm to debug python script一 我正在尝试调试pyethapp https
  • Scrapy 蜘蛛无法工作

    由于到目前为止没有任何效果 我开始了一个新项目 python scrapy ctl py startproject Nu 我完全按照教程操作 创建了文件夹和一个新的蜘蛛 from scrapy contrib spiders import
  • asyncio - 多次等待协程(周期性任务)

    我正在尝试为异步事件循环创建定期任务 如下所示 但是我收到 RuntimeError 无法重用已等待的协程 异常 显然 asyncio 不允许等待相同的可等待函数 如中讨论的这个错误线程 https bugs python org issu
  • CSV 在列中查找最大值并附加新数据

    大约两个小时前 我问了一个关于从网站读取和写入数据的问题 从那时起 我花了最后两个小时试图找到一种方法来从输出的 A 列读取最大日期值 将该值与刷新的网站数据进行比较 并将任何新数据附加到 csv 文件而不覆盖旧的或创建重复项 目前 100
  • 如何对字符串列表进行排序?

    在 Python 中创建按字母顺序排序的列表的最佳方法是什么 基本回答 mylist b C A mylist sort 这会修改您的原始列表 即就地排序 要获取列表的排序副本而不更改原始列表 请使用sorted http docs pyt
  • 具有指定置信区间的 Seaborn 条形图

    我想在 Seaborn 条形图上绘制置信区间 但我已经计算出置信区间 如何让 Seaborn 绘制我的置信区间而不是尝试自行计算它们 例如 假设我有以下 pandas DataFrame x pd DataFrame Group 1 0 5
  • 如何使用 Django (Python) 登录表单?

    我在 Django 中构建了一个登录表单 现在我遇到了路由问题 当我选择登录按钮时 表单不会发送正确的遮阳篷 我认为前端的表单无法从 查看 py 文件 所以它不会发送任何 awnser 并且登录过程无法工作 该表单是一个简单的静态 html
  • 如何识别图形线条

    我有以下格式的路径的 x y 数据 示例仅用于说明 seq p1 p2 0 20 2 3 1 20 2 4 2 20 4 4 3 22 5 5 4 22 5 6 5 23 6 2 6 23 6 3 7 23 6 4 每条路径都有多个点 它们

随机推荐

  • .gitattributes:text=auto 是否仍然使用 core.autocrlf 来检测 EOL

    With a gitattributes entry text auto 签出文本文件时使用什么行分隔符 这文档 https git scm com docs gitattributes gitattributes Settostringv
  • Eclipse 高亮显示出现次数,右列标记颜色

    类似 但又不同这个问题 https stackoverflow com questions 671219 eclipse coloring what is the pref item for background color of all
  • 未找到内部存储上的 Android 文件

    我正在尝试在我的应用程序的 Android 内部存储空间中写入一个文件 经过多次尝试 终于用这个方法成功了在 Android 手机的内存中写入 读取文件 https stackoverflow com questions 9306155 w
  • 我是否需要关闭和/或处置通过OperationContext.Current.GetCallbackChannel 获取的回调通道?

    我正在使用 OperationContext Current GetCallbackChannel 获取调用 WCF 服务操作的客户端的通道 我是否需要担心关闭 处置这些回调通道 或者这是由框架处理的 好吧 我自己尝试了一下 结果发现 如果
  • JavaFx:使用列名称将 TableView 导出到 Excel

    我正在尝试导出tableView擅长使用阿帕奇兴趣点 http poi apache org 一切都很好 但我需要导出所有表而不仅仅是项目 我的意思是当我使用此代码时使用列名称 HSSFWorkbook workbook new HSSFW
  • 使用 vuejs 中的方法进行条件 @click

    这是我的 for 循环 li a href crumb name a li click methodName 不应在最后一次迭代中可用 我可以使用 index breadcrumbs length 1 检查最后一次迭代 使用 apply v
  • Caffe Sigmoid交叉熵损失层损失函数

    我正在查看Caffe的代码Sigmoid 交叉熵损失层 https github com BVLC caffe blob master src caffe layers sigmoid cross entropy loss layer cp
  • wkhtmltopdf 的字母间距太大

    我正在使用 wkhtmltopdf 将网页下载为 pdf 但是css属性letter spacing似乎不起作用 font size 20px letter spacing 0px font size 20px letter spacing
  • iOS - MKMapView 使用地址而不是纬度/经度进行位置注释

    我可以在我的MKMapView然而 通过使用纬度和经度 我需要使用位置的提要是使用街道地址而不是纬度和经度 例如 1234 西 1234 东 旧金山 CA 这会不会与CLLocationManager 以前有人尝试过吗 基于psoft的优秀
  • UILabel 文本作为 html 文本

    我被一个小问题困住了 我需要使用一个句子 其中前两个单词为粗体 后两个单词为斜体 喜欢 I am using an O目标C开发商 怎么做 这在 Objective C 中可能吗 对于 iOS7 你可以使用这个 NSString htmlS
  • BLOb:无法读取所有数据,但只有几kb

    我正在使用 BLOb 支持从 MySQl 插入和读取 JDBC 我可以做到这一点 但是当它读取时 它只有几kb 我不知道为什么 这是工作代码 import java sql import java io public class Inser
  • 基于大空白的扫描图像切片

    我打算将问题分开this https www tnpsc gov in Tentative Document RAGS 2022 opt pdfPDF 文档 挑战在于问题的间隔不是有序的 例如第一个问题占据一整页 第二个问题也占据一整页 第
  • 闪存和辅助功能

    作为一名 Web 开发人员 我从事的许多项目都属于政府的范畴 因此受到 508 无障碍法律的约束 有时还受到 W3C 无障碍指南的约束 在满足这些要求的同时 Flash 可以使用到什么程度 对于使用 javascript 口头禅是通过提供相
  • CreateWindow“编辑”键入的字符“不可见”?

    在研究了所有我能找到的正确语法之后CreateWindow Edit 打电话 我不得不认输 当我运行程序时 我在编辑框中得到的只是 隐形字符 当我打字时 光标向右移动 但我输入的字符却看不到 只有当我用鼠标选择框内容时 我才能看到文本 但一
  • 是否有更简单的方法在 C# 控制台应用程序中使用 Windows ctrl+v(粘贴)功能?

    我构建了一个带有命令解释器的控制台应用程序 为了让事情变得更容易 我需要添加对读取剪贴板的支持ctrl v被按下 当我按 ctrl v 时 我看到了符号 V在控制台中 所以我用剪贴板文本替换该字符 经过一番谷歌搜索后 我发现剪贴板可以通过
  • 从 django 模板获取序列化的 json 对象?

    我需要澄清一下 例如 如果我使用序列化对象进行视图 def sample request res name man encoded json dumps res return render to response sample exampl
  • 输入“CREATE TABLE”时没有可行的替代方案

    我无法使用以下命令添加 MySQL 连接器 curl i X POST H Accept application json H Content Type application json localhost 8083 connectors
  • 隐式参数的有效用法

    下列example http www scala lang org node 114 from 斯卡拉之旅显示如何使用隐式根据类型提供适当的缺失成员 add 和 unit 编译器将在范围内选择正确的隐式对象 该库还使用它List sortB
  • gnuplot - 仅在图例/键中增加点的大小

    我有一个如下所示的图表 我想增加图例中点的大小 是图例还是关键 但不增加图中点的大小 图片中解释得更好 这能实现吗 首先不绘制增加符号大小的任何内容 然后绘制不带密钥的数据 gnuplot gt plot 1 0 ls 7 lw 6 wit
  • Python doctest 是否消除了单元测试的需要?

    我所在项目的一位开发人员同事认为文档测试与单元测试一样好 并且如果一段代码经过文档测试 则不需要进行单元测试 我不相信情况是这样 任何人都可以提供一些可靠的 理想引用的例子来支持或反对文档测试取代单元测试需求的论点吗 谢谢 丹尼尔 编辑 任