pythonunittestassertCountEqual使用'is'而不是'=='?

2024-02-02

我正在尝试使用 python 的unittest库来编写一些单元测试。我有一个返回对象的无序列表的函数。我想验证对象是否相同,并且我正在尝试使用断言计数等于 http://docs.python.org/py3k/library/unittest.html?highlight=unittest#unittest.TestCase.assertCountEqual去做这个。

然而,尽管各个对象是相等的,但这似乎失败了(==) 对彼此。这是断言失败的“diff”输出:

First has 1, Second has 0:  Intersection(time=8.033252939677466e-08, del_time=8.033252939677466e-08, pos=Vector(10.00, 0.00), line=Line(Vector(500.00, 0.00), Vector(0.00, 0.00)), ent=None, oth=None, invalid=False)
First has 1, Second has 0:  Intersection(time=-9.918729244820295e-16, del_time=-9.918729244820295e-16, pos=Vector(10.00, 0.00), line=Line(Vector(500.00, 0.00), Vector(0.00, 0.00)), ent=None, oth=None, invalid=False)
First has 0, Second has 1:  Intersection(time=8.033252939677466e-08, del_time=8.033252939677466e-08, pos=Vector(10.00, 0.00), line=Line(Vector(500.00, 0.00), Vector(0.00, 0.00)), ent=None, oth=None, invalid=False)
First has 0, Second has 1:  Intersection(time=-9.918729244820295e-16, del_time=-9.918729244820295e-16, pos=Vector(10.00, 0.00), line=Line(Vector(500.00, 0.00), Vector(0.00, 0.00)), ent=None, oth=None, invalid=False)

验证它们是否相等:

>>> i = Intersection(time=8.033252939677466e-08, del_time=8.033252939677466e-08, pos=Vector(10.00, 0.00), line=Line(Vector(500.00, 0.00), Vector(0.00, 0.00)), ent=None, oth=None, invalid=False)
>>> j = Intersection(time=8.033252939677466e-08, del_time=8.033252939677466e-08, pos=Vector(10.00, 0.00), line=Line(Vector(500.00, 0.00), Vector(0.00, 0.00)), ent=None, oth=None, invalid=False)
>>> i == j
True
>>> i = Intersection(time=-9.918729244820295e-16, del_time=-9.918729244820295e-16, pos=Vector(10.00, 0.00), line=Line(Vector(500.00, 0.00), Vector(0.00, 0.00)), ent=None, oth=None, invalid=False)
>>> j = Intersection(time=-9.918729244820295e-16, del_time=-9.918729244820295e-16, pos=Vector(10.00, 0.00), line=Line(Vector(500.00, 0.00), Vector(0.00, 0.00)), ent=None, oth=None, invalid=False)
>>> i == j
True

我的猜测是assertCountEqual函数正在检查两者是否具有相同的身份(例如i is j),而不是平等。

  • 是否有一个单元测试函数可以提供相同的差异 能力,但使用平等比较,而不是同一性?
  • 或者,有什么方法可以编写一个执行的函数 类似于assertCountEqual?

EDIT:我正在运行 python 3.2.2。


你可以自己找找比较是如何进行的 http://hg.python.org/cpython/file/5b2f40ed32fd/Lib/unittest/case.py#l969:

  • 从每个可迭代对象生成一个列表
  • use a 收藏.柜台 http://docs.python.org/py3k/library/collections#collections.Counter计算对象数量 - 仅适用于可散列元素
  • 如果元素不可散列,直接比较它们 http://hg.python.org/cpython/file/5b2f40ed32fd/Lib/unittest/util.py#l84

as your Intersections 是对象,它们是hashable http://docs.python.org/py3k/glossary.html#term-hashable per default http://docs.python.org/py3k/reference/datamodel.html#object.__hash__,但是如果你没有提供合适的哈希函数(如果你提供比较方法 http://docs.python.org/py3k/reference/datamodel.html#richcmpfuncs)它们将被视为不同。

那么,你的Intersection类履行哈希合约吗?

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

pythonunittestassertCountEqual使用'is'而不是'=='? 的相关文章

  • _启动服务器时 Django 中出现死锁错误

    我在启动 python 服务器时多次遇到此错误 当我更改任何文件并且服务器再次启动时也会发生这种情况 我尝试删除环境并重新创建环境 但仍然存在相同的错误 Python 3 5 2 默认 2018 年 11 月 12 日 13 43 14 G
  • 生产中的静态文件出现 Django 301 和 403 禁止错误

    我正在尝试使用 nginx 和 Gunicorn 在 ubuntu 14 04 vps 上部署 django 网站 但是我的 css 文件和 js 文件没有加载 我在默认的 django 开发服务器上开发了它 它运行得很好 但是当我部署我的
  • OSError: [Errno 8] MacOS 上的 GeckoDriver 和 Selenium 执行格式错误

    我正在使用 firefox gecko 驱动程序来制作机器人 我的机器人不断收到错误消息 我发现消息的来源是 from selenium import webdriver browser webdriver Firefox lines 我已
  • 与 Poetry 一起安装的软件包无法导入

    有一个简单但令人困惑的问题 当我尝试在模块中使用我用诗歌添加的包时 它无法导入 采取的步骤 poetry add sendgrid 在一个模块中 import sendgrid Error Import sendgrid could not
  • 如何为超过 50.000 个网址的 django 站点地图创建索引

    我有以下网址配置 url r sitemap xml index sitemaps sitemaps url r sitemap P section xml cache page 86400 sitemap sitemaps sitemap
  • 子进程+多重处理-按顺序执行多个命令

    我有一组命令行工具 我想在一系列文件上并行运行 我写了一个 python 函数来包装它们 看起来像这样 def process file fn print os getpid cmd1 echo fn p subprocess Popen
  • 以元组作为参数的新样式格式

    为什么我不能使用元组作为新样式格式化程序的参数 string format 它在旧风格 字符串 中工作正常吗 这段代码的工作原理 gt gt gt tuple 500000 500 5 print First item d second i
  • python中计算最小范数解或从伪逆得到的解最准确的方法是什么?

    我的目标是解决 Kc y 与伪逆 即最小范数解 c K y 这样模型 希望 是高次多项式模型f x sum i c i x i 我对不确定的情况特别感兴趣 在这种情况下 我们拥有比数据更多的多项式特征 方程很少 变量 未知数太多 colum
  • Python 递归搜索带有嵌套键的字典

    我最近必须使用嵌套的字典 列表组合来解决实际数据系统中的问题 我为此工作了很长一段时间并提出了解决方案 但我非常不满意 我不得不求助于使用globals 和一个命名的临时全局参数 我不喜欢使用全局变量 这只是要求注入漏洞 我觉得必须有一种更
  • pytest 是否有类似 google test 的非致命 EXPECT_* 行为?

    我更熟悉谷歌测试框架并了解他们支持的主要行为对ASSERT vs EXPECT 这是致命和非致命断言模式 来自文档 https github com google googletest blob master googletest docs
  • 将二进制解码为pdf

    我正在使用一个平台 当您将 pdf 上传到该平台时 它会使用 Python 中的 base64 编码转换 pdf 然后它将二进制字符串存储在数据库中 现在我想解码字符串并将它们写入本地文件夹 所以我想使用 with open 结构并向其传递
  • python中的蓝牙编程[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有好的Python 蓝牙编程库 我尝试了 PyBluez 但 Eclipse 无法识别模块蓝牙 谁
  • 将列表扩展到一定长度的最Pythonic方法? [复制]

    这个问题在这里已经有答案了 我的目标是获取未知数量元素的列表并将其扩展 切片以精确n元素 填充列表太短0以及对太长的列表进行切片 例如 n 10 foo 1 2 3 4 print some func foo n 应该返回 1 2 3 4
  • Virtualenvwrapper 在错误的目录中创建项目?

    我对 Python 和 virtualenv 非常陌生 所以如果这是一个明显的问题 我深表歉意 我的电脑上运行 Windows 10 有一个 C 驱动器和一个 D 驱动器 我将 python 和脚本路径设置为 D 驱动器上的正确位置 在控制
  • 根据第二个数据帧中的日期范围对一个数据帧中的值求和

    我有两个数据框 下面的简化示例 一个包含一系列日期和值 df1 第二个包含日期范围 df2 我想识别 选择 屏蔽 df1 中 df2 的日期范围 对关联的 df1 值求和并将它们添加到 df2 中的新列 我是一个新手 我尝试过的所有技术都不
  • 伪造文件系统/虚拟文件系统

    我有一个 Web 服务 用户可以将在服务器上运行的 python 脚本上传到该服务 这些脚本处理服务器上的文件 我希望它们能够仅看到服务器文件系统的特定层次结构 最好 一个临时文件夹 我在其中复制要处理的文件和脚本 该服务器最终将是基于 L
  • 如何获取函数内的函数对象(Python)

    我想要有类似的东西 def x print get def name 但不一定知道名字x 理想情况下它会返回 x 其中 x 是函数的名称 您可以使用 Python 的内置检查库来完成此操作 如果您想处理更复杂的情况 您可以阅读更多其文档 但
  • 从 sqlalchemy 获取第一行

    我有以下查询 profiles session query profile name filter and profile email email profile password password hash 如何检查是否存在一行以及如何返
  • 从 S3 存储桶下载 300 万个对象的最快方法

    我尝试过使用 Python boto 多处理 S3cmd 和 J3tset 但都在努力解决 有什么建议 也许是您一直在使用的现成脚本或我不知道的其他方式 EDIT eventlet boto 是一个有价值的解决方案 如下所述 在这里找到了一
  • 处理导入模块异常

    Python 中如何处理模块特定的异常 例如 如果我想捕获 python 中 sqlite3 模块抛出的错误 我将在 中放置什么来处理该异常 import sqlite3 try except 答案已经在这里了如何在Python中引用异常类

随机推荐

  • 如何像 Whatsapp 和 Viber 一样在电话簿/联系人中添加我的应用程序连接?

    我想要我的 Android 应用程序联系要添加到contact 我将根据结果检查用户是否正在使用我的应用程序 我需要在existing联系人 我已经参考了很多 但它通过添加连接添加了新的联系人 我使用过的示例之一是here https gi
  • 在 React JSX 中循环内循环

    我正在尝试在react jsx 循环内的循环中渲染 就像下面这样 this state ans map function item return this state quest map function item1 return item
  • 使用两个模拟对象的Python单元测试,如何验证调用顺序?

    我正在编写一个类 它协调两个仪器 一个远程可控电源单元和一个用于控制被测设备的总线控制器 以便在被测设备 DUT 上执行各种测量 对这两种工具的访问均以 Python 类的形式实现 并且新类可以使用对每种工具的引用 DUT 比较脆弱 具有非
  • Turbo C 编译器问题,sqrt() 函数无法使用变量参数

    我搜索了与我的问题类似的问题类似问题 https stackoverflow com questions 3533594 sqrt function not working with variable arguments 但我的问题是使用
  • MySQL 错误? (三角学)

    当我偶然发现这一点时 我正在通过预先计算表中字段的一些三角函数来优化查询 SELECT 6371 acos 0 793521289617132 0 793521289617132 0 608542490648241 0 6085424906
  • 正确的 jQuery 图像加载()?

  • 在哪里可以找到 AWS CodeDeploy 部署日志?

    当我选择部署然后单击时 我可以在 Codedeploy 下的 AWS 控制台中看到日志choose events 但它们似乎被截断了 如果我通过 SSH 进入实例 这些 codedeploy 部署日志位于哪里 我看到登录 var log a
  • 将 Python 列表插入 MySQL 的列中

    我有一个列表 我想使用 Python 将该列表的每个元素输入到 MYSQL 列的关联索引单元格中 E g lst 11 22 33 44 55 66 MYSql 列 Data 11 22 33 44 55 66 我怎样才能做到这一点 以下代
  • 什么给出了 java.lang.NoClassDefFoundError?

    我想读取 Excel 文件 但给出 Exception in thread main java lang NoClassDefFoundError org apache xmlbeans XmlObject at ExcelReader m
  • 将 IR 转换为 Z3 公式?

    我在 IR 中有一些代码 并且该代码已经是 SSA 形式 现在我正在尝试将此代码转换为SMT公式 然后将其提供给Z3进行一些验证 我有一些疑问 有没有技术论文详细解释如何将SSA IR转换为SMT公式 我四处寻找 一无所获 对于那些计算指令
  • 从给定索引开始枚举 NSArray 双向搜索(无环绕)

    例子 我有一个包含 15 个对象的数组 我想从给定的索引开始枚举 说从索引 5 开始 然后是上面的索引 下面的索引 上面 下面等等 我不希望它环绕 而是停止并继续朝未探索的方向前进 所以我的例子中索引的顺序是 5 6 4 7 3 8 2 9
  • 神经网络特征提取

    我正在使用神经网络进行字母和数字的简单识别 到目前为止 我使用字母图像的每个像素作为网络的输入 不用说 这种方法产生的网络非常大 所以我想从图像中提取特征并将它们用作神经网络的输入 我的第一个问题是字母的哪些属性有利于识别它们 第二个问题是
  • 将PC添加到域并同时更改名称的问题

    我正在尝试简化将 PC 添加到域的过程 到目前为止 我可以更改 PC 名称 重新启动并将 PC 添加到特定 OU 然后再次重新启动 我和OP有同样的问题这个话题 https stackoverflow com questions 62177
  • 具有泛型构造函数的泛型类? [复制]

    这个问题在这里已经有答案了 我有一个通用类 构造函数需要接受一个参数 该参数是同一类的另一个实例 问题是另一个实例可以具有不同的泛型类型 看起来 C 允许我拥有一个具有自己的泛型类型的方法 但这对于构造函数来说似乎是不允许的 public
  • SwiftUI TextField 货币格式问题

    我在使用 TextField 输入货币金额时遇到了 SwiftUI 最终用户的可用性问题 绑定字段是双精度型 初始设置为 0 当显示文本字段时 提示为 0 00 问题是 当用户想要输入一个值时 他们必须手动使用退格键删除 0 00 另外 如
  • Oracle XE查询日志

    在 Postgres 中 您可以打开查询日志记录 从而生成一个包含任何客户端发出的所有查询的文件 Oracle XE 中是否有类似的可能性 如何打开它以及在哪里可以找到生成的文件 你会 更改会话设置 sql trace true 跟踪文件将
  • 为本机 iOS 应用程序创建 Jitsi Meet 框架并集成到 Xcode 项目中

    我已经从 Jitsi meet 网站和 git repo 检查了详细信息 以在本机应用程序中实现它 执行构建命令后 我无法在提到的位置找到框架 我也无法识别符号位置 如建议的那样 如何获取需要包含在本机应用程序中的框架 以使 jitsi m
  • 带声音的图像按钮不起作用

    我在android studio中制作了一个程序 其中有10个图像按钮 每个图像按钮单击时都会产生声音 但是 当我在模拟器上运行它们时 只有前 7 个图像按钮会发出声音 不在乎我单击的按钮的顺序 我对此很陌生 请帮助我 这是我的代码 pub
  • 如何在 ASP.NET 中找到当前页面的(文件)名称?

    如何在后面的代码中找到 default aspx 当前页面或Web控件的名称 我想编写一个使用这个名称的超类 你的意思是你想找到当前执行的对象的原始文件名 即 从您想要检索的控件 MyControl 内部MyControlOnDisk as
  • pythonunittestassertCountEqual使用'is'而不是'=='?

    我正在尝试使用 python 的unittest库来编写一些单元测试 我有一个返回对象的无序列表的函数 我想验证对象是否相同 并且我正在尝试使用断言计数等于 http docs python org py3k library unittes