断言在 Python 单元测试中调用了某个方法

2024-01-09

假设我在 Python 单元测试中有以下代码:

aw = aps.Request("nv1")
aw2 = aps.Request("nv2", aw)

有没有一种简单的方法来断言特定方法(在我的例子中aw.Clear()) 在测试的第二行期间被调用?例如有没有这样的事情:

#pseudocode:
assertMethodIsCalled(aw.Clear, lambda: aps.Request("nv2", aw))

I use Mock http://pypi.python.org/pypi/mock/(现在是单元测试.mock https://docs.python.org/dev/library/unittest.mock.html在 py3.3+ 上)为此:

from mock import patch
from PyQt4 import Qt


@patch.object(Qt.QMessageBox, 'aboutQt')
def testShowAboutQt(self, mock):
    self.win.actionAboutQt.trigger()
    self.assertTrue(mock.called)

对于您的情况,它可能如下所示:

import mock
from mock import patch


def testClearWasCalled(self):
   aw = aps.Request("nv1")
   with patch.object(aw, 'Clear') as mock:
       aw2 = aps.Request("nv2", aw)
          
   mock.assert_called_with(42) # or mock.assert_called_once_with(42)

Mock 支持很多有用的功能,包括修补对象或模块的方法,以及检查是否调用了正确的东西等等。

买者自负! https://en.wikipedia.org/wiki/Caveat_emptor(买家小心!)

如果您输入错误assert_called_with (to assert_called_once或者只是交换两个字母assert_called_wiht)你的测试可能仍然会运行,因为 Mock 会认为这是一个模拟函数并愉快地继续,除非你使用autospec=true。欲了解更多信息,请阅读断言_调用_一次:威胁或威胁 http://engineeringblog.yelp.com/2015/02/assert_called_once-threat-or-menace.html.

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

断言在 Python 单元测试中调用了某个方法 的相关文章

  • 设置面积图 openpyxl 的透明度(alpha)

    我想使用 openpyxl 设置面积图背景的透明度 我的图表代码是 from openpyxl drawing fill import PatternFillProperties ColorChoice c2 AreaChart c2 gr
  • Keras 中的 load_model 和 Lambda 层

    如何加载具有 lambda 层的模型 这是重现行为的代码 MEAN LANDMARKS np load data mean shape 68 npy def add mean landmarks x mean landmarks np ar
  • Django 自引用关系?

    我正在尝试创建模型页面 页面也应该能够有 子页面 我的模型代码如下使Python崩溃 http pastie org private butthk1aaeb3pmh7mmag1g在我的Mac python 2 6 1 和Ubuntu 10
  • 使用 JSON 将数据从 Python 导出到 Tableau?

    如何以表格形式从 Python 获取 400 万行和 28 列 我假设 基于搜索 我应该使用 JSON 格式 这种格式可以处理大量数据并且足够快 我制作了 12 行数据的子集并尝试使其正常工作 好消息是 它正在发挥作用 坏消息 不是我想要的
  • Python XLWT调整列宽

    XLWT 的易用性给我留下了深刻的印象 但有一件事我还没有弄清楚该怎么做 我正在尝试将某些行调整为显示所有字符所需的最小宽度 换句话说 如果双击单元格之间的分隔线 excel 会做什么 我知道如何将列宽调整为预定量 但我不确定如何确定显示所
  • 如何在 Pandas 中用多个唯一字符串替换重复值?

    import pandas as pd import numpy as np data Name Tom Tom Jack Terry Age 20 21 19 18 df pd DataFrame data 假设我有一个如下所示的数据框
  • AMLS 实验运行停留在“正在运行”状态

    我运行了 Azure 机器学习服务实验 并使用 Jupyter Notebook 记录了神经网络损失 日志记录工作正常 神经网络训练也按预期完成 但实验一直停留在运行状态 关闭计算资源不会关闭实验运行 我无法从实验面板取消它 此外 运行没有
  • Keras ImageDataGenerator 验证分割未从打乱的数据集中选择

    如何将图像数据集随机拆分为训练数据集和验证数据集 更具体地说 validation splitKeras 中的论证ImageDataGenerator函数不是随机地将我的图像分割为训练和验证 而是从未洗牌的数据集中分割验证样本 当指定val
  • 如何有效地找到两个轮廓集之间的所有交点

    我想知道找到两组轮廓线之间所有交点 舍入误差 的最佳方法 哪种方法最好 这是示例 import matplotlib pyplot as plt import numpy as np x np linspace 1 1 500 X Y np
  • 当从 python 使用 TSQL(SQL Server 上的 mssql)时,如何自动生成 SQLAlchemy 的 ORM 代码?

    SQLAlchemy 依赖于我构建这样的 ORM 类 from sqlalchemy import Column DateTime String Integer ForeignKey func from sqlalchemy orm imp
  • 当使用 cx_Freeze 和 tkinter 时,我得到:“DLL 加载失败:找不到指定的模块。” (Python 3.5.3)

    当使用 cx Freeze 和 Tkinter 时 我收到以下消息 File C Users VergilTheHuragok AppData Local Programs Python Python35 32 lib tkinter in
  • 使用 Cython 扩展模块分发共享库和一些 C 代码

    我正在尝试从大型 C 共享库 libbig so 中获取一些函数 并通过 Cython 将它们公开给 Python 为此 我有一个小 C 文件 small cpp 它为我需要的共享库的功能提供了一个薄包装器 从而可以轻松地通过 Cython
  • 无法通过蓝牙读取心率服务

    我希望创建一个简单的 python 脚本 通过蓝牙从 Polar 传感器读取心率数据 我已经阅读了很多其他帖子 但找不到我能够成功执行的简单内容 我有 Polar 可穿戴设备的设备 MAC 地址 我知道我想要读取的值的服务 UUID HR
  • 在 ubuntu 12.04 上安装 ReviewBoard

    我正在尝试使用 easy install 在 ubuntu 12 04 上安装 ReviewBoard http www reviewboard org docs manual 1 7 admin installation linux ht
  • Django 和 REST API 服务基于计算的请求

    我在 Django 中编写了一个机器学习应用程序 以便用户可以在表单中指定一些参数并训练模型 模型训练完成后 我想满足以下请求 curl http localhost 8000 model input XYZ 我希望 Django 返回给定
  • Numpy 相当于 if/else 不带循环

    有没有任何Pythonic方法可以删除下面代码中的for循环和if else 此代码迭代 NumPy 数组并检查条件并根据条件更改值 gt gt gt import numpy as np gt gt gt x np random rand
  • 从线程队列中获取所有项目

    我有一个线程将结果写入队列 在另一个线程 GUI 中 我定期 在 IDLE 事件中 检查队列中是否有结果 如下所示 def queue get all q items while 1 try items append q get nowai
  • Python Blowfish 加密

    由于我对 Java 的了解不完整 我正在努力将此加密代码转换为 Python 代码 两者应该得到完全相同的结果 帮助将不胜感激 Java函数 import javax crypto Cipher import javax crypto sp
  • 如何在 python setup.py 中 chmod 文件?

    我使用 setup py 创建了一个 python 包安装 我希望它复制文件夹 为临时创建的 did 中的数据文件 问题是我必须使用 sudo 权限调用 setup py 因为它写入 usr local 因此 当我的数据文件复制到 did
  • 检查Python multiprocessing.Connection 的实例吗?

    Connection对象是在打开时创建的multiprocessing Pipe 然而 尚不清楚如何检查一个对象是否是一个实例Connection 在Python3 3 4 3 3 3 2 中 检测Connection我可以 from mu

随机推荐

  • 基于视图的 NSOutlineview 选择渐变

    我仍然在我的 Cocoa 小应用程序中与基于视图的 NSOutlineView 作斗争 我正在尝试在查找器之后对我的 OutlineView 进行建模 当 Finder OutlineView 失去焦点 例如单击右侧的任何文件夹 时 所选行
  • 冯·诺依曼 vs 哈佛建筑

    为什么在设计个人计算机时 基于冯 诺依曼体系结构的计算机体系结构比哈佛体系结构更受青睐 而哈佛架构用于设计基于微机的计算机系统和基于DSP的计算机系统 当前 PC 的 CPU 设计同时具有哈佛和冯 诺依曼元素 更多冯 诺依曼 如果您查看 L
  • 警告:`pyenv init -` 不再设置路径。苹果系统

    由于错误的原因 我通过运行更新了我的 pyenvpyenv update 此后每次我打开新控制台时都会出现此错误 WARNING pyenv init no longer sets PATH Run pyenv init to see th
  • 在Matlab中,对于多输入函数,如何将单个输入用作多个输入?

    我有一个函数需要可变数量的输入 比如说myfun x1 x2 x3 现在 如果我将输入存储在结构体数组 S 中 我想做类似的事情myfun S x1 S x2 我该怎么做呢 您可以首先使用将结构转换为元胞数组结构2单元 http www m
  • 如何将 ViewBinding 与抽象基类一起使用

    我开始使用 ViewBinding 在搜索示例或一些建议后 我最终在这里发布了这个问题 如何将 ViewBinding 与抽象基类一起使用 该基类处理预期出现在每个子布局中的视图上的相同逻辑 设想 我有一个基类public abstract
  • 让 PhP 代码先于 Javascript 执行

  • 附加文件内容作为 unix shell 命令的参数

    我正在寻找一个 unix shell 命令来附加文件的内容作为另一个 shell 命令的参数 例如 command lt lt commandArguments txt xargs 是专门为此构建的 cat commandArguments
  • 非常基本的 Backbone/Underscore via Require.js 问题让我抓狂

    我正在尝试实现一个极其基本的测试 该测试使用通过 require js 加载的 jquery underscore js 和backbone js 但出于某种原因 我似乎无法将所有内容正确排列 研究表明其他人没有遇到过同样的问题 所以我知道
  • 使用 jquery 和 css 在图像上显示文本

    我正在使用教程http www webdesignlondon tristar co uk website design london insane jquery image rollover http www webdesignlondo
  • QSplitter 显示两个小部件之间的分隔线或边距

    我有一个 QSplitter 和两侧的两个小部件 但我希望能够有一个边距 以便两个小部件之间有清晰的过渡 我查看了 QSplitter 和 QSplitterHandle 但没有看到任何明确的方法来执行此操作 如何在两个小部件之间添加分隔线
  • 从 Javascript 访问 Chrome 的内部 gzip 例程

    所有现代浏览器都包含用于与服务器交换压缩数据的 gzip 例程 谁能给我指出正确的方向来编写一个允许 Javascript 利用这个例程的 Chrome 扩展 我想在通过 WebSocket 将一些数据发送到服务器之前先用 Javascri
  • 如何设置基于注释的路由翻译?

    我网站的所有路由都是基于注释来实现的 现在 我想翻译我的路由 为了实现这一点 我尝试使用捆绑包JMSI18n路由包 https github com schmittjoh JMSI18nRoutingBundle 然而 文档没有给出任何如何
  • SQLite3 忽略重音符号

    如何在 SQLite3 上使用 LIKE 子句进行 SELECT 忽略重音符号 PS 这是为了Android内置的SQLite支持 有一个解决方案 它并不优雅 但可以在 Android 上运行 REPLACE 函数可以用普通字符替换重音字符
  • 将部分接口类型的对象转换为 TypeScript 中的“完整”接口类型

    假设我有一个界面A看起来像这样 interface A prop1 string prop2 string 我初始化对象obj像这样 const obj Partial a prop1 xyz 有什么办法可以投吗obj to A并自动设置未
  • R studio 列表和数据框自动名称完成不再工作

    突然 R Studio 在输入时停止自动完成我的列表和数据框内容mylist 然后按Tab 我得到的结果消息是 无匹配 我在非常简单的列表或数据框上尝试过 例如 simpledataset lt data frame a rep 0 100
  • 来自 Microsoft 文档的 C# String.Length

    微软文档指出 https msdn microsoft com en us library system string length 28v vs 110 29 aspx该代码将返回 7 个字符 Length 属性返回此实例中 Char 对
  • 如何从 iframe src 获取哈希值?

    当我执行 iframe src 时 我的 iframe 有一个带有哈希值的 url 它只是为我提供了 url 而没有从其他域附加哈希值 我可以读取带有哈希值的整个网址吗 由于安全限制不太可能 我很惊讶你甚至可以获得 URL 你能显示代码吗
  • 动态创建变量

    我曾尝试过学习Python org https www learnpython org en Hello 2C World 21要动态创建变量 可以按如下方式创建 food bread vars food asdasd print brea
  • OAuth 2.0 - 何时应使用刷新令牌更新访问令牌?

    我目前正在使用 OAuth 2 0 访问 Google API 根据我的理解 我应该使用返回的刷新令牌来更新访问令牌 是否应该在过期之前刷新 还是应该在用户使用已过期的访问令牌从 api 请求数据时刷新 如果应该在过期之前完成 我是否应该运
  • 断言在 Python 单元测试中调用了某个方法

    假设我在 Python 单元测试中有以下代码 aw aps Request nv1 aw2 aps Request nv2 aw 有没有一种简单的方法来断言特定方法 在我的例子中aw Clear 在测试的第二行期间被调用 例如有没有这样的事