在 python @patch 装饰器中使用 self

2023-12-19

我正在尝试使用python的mock.patch来用nose实现单元测试。

class A:

    def setUp(self):
        self.b = 8 #contrived example

    @patch.object('module.class', 'function', lambda x: self.b)
    def testOne(self):
        # do test #

在这里,补丁抱怨它不认识自己(这是正确的)。以干净的方式获得此类功能的最佳方法是什么?

我知道我可以使用全局变量,或者我可以在测试中模拟它(但这涉及我在测试结束时清理对象)。


你不能使用self在方法装饰器上,因为您位于类定义中并且该对象不存在。如果您确实想访问self而不仅仅是使用一些静态值,您可以考虑遵循以下方法:totest是我的 python 路径中的一个模块fn是我要修补的方法,而且我正在使用固定的return_value而是一个更具可读性示例的函数

class MyTestCase(unittest.TestCase):
    def setUp(self):
        self.b = 8 #contrived example

    def testOne(self):
        with patch('totest.fn', return_value=self.b) as m:
            self.assertEqual(self.b, m())
            self.assertTrue(m.called)

    @patch("totest.fn")
    def testTwo(self,m):
        m.return_value = self.b
        self.assertEqual(self.b, m())
        self.assertTrue(m.called)

In testOne() I use patch作为上下文,我将可以完全访问self. In testTwo()(这是我的标准方式)我设置了我的模拟m在测试开始时然后使用它。

最后我用了patch()代替patch.object()因为我真的不明白你为什么需要patch.object()但您可以根据需要更改它。

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

在 python @patch 装饰器中使用 self 的相关文章

  • 在 python 程序中合并第三方库的最佳实践是什么?

    下午好 我正在为我的工作编写一个中小型Python程序 该任务需要我使用 Excel 库xlwt and xlrd 以及一个用于查询 Oracle 数据库的库 称为CX Oracle 我正在通过版本控制系统 即CVS 开发该项目 我想知道围
  • Django 管理员在模型编辑时间歇性返回 404

    我们使用 Django Admin 来维护导出到我们的一些站点的一些数据 有时 当单击标准更改列表视图来获取模型编辑表单而不是路由到正确的页面时 我们会得到 Django 404 页面 模板 它是偶尔发生的 我们可以通过重新加载三次来重现它
  • 何时使用模拟框架?

    因此 我正在使用模拟框架 Moq 进行单元测试 并且想知道何时应该使用模拟框架 以下两个测试之间的优点 缺点是什么 public class Tests Fact public void TestWithMock Arrange var r
  • Django:按钮链接

    我是一名 Django 新手用户 尝试创建一个按钮 单击该按钮会链接到我网站中的另一个页面 我尝试了一些不同的例子 但似乎没有一个对我有用 举个例子 为什么这不起作用
  • Python - StatsModels、OLS 置信区间

    在 Statsmodels 中 我可以使用以下方法拟合我的模型 import statsmodels api as sm X np array 22000 13400 47600 7400 12000 32000 28000 31000 6
  • Angular 2和Jasmine单元测试:无法获取innerHtml

    我正在使用测试组件 WelcomeComponent 的示例之一 import Component OnInit from angular core import UserService from model user service Co
  • Python pickle:腌制对象不等于源对象

    我认为这是预期的行为 但想检查一下 也许找出原因 因为我所做的研究结果是空白 我有一个函数可以提取数据 创建自定义类的新实例 然后将其附加到列表中 该类仅包含变量 然后 我使用协议 2 作为二进制文件将该列表腌制到文件中 稍后我重新运行脚本
  • 绘制方程

    我正在尝试创建一个函数 它将绘制我告诉它的任何公式 import numpy as np import matplotlib pyplot as plt def graph formula x range x np array x rang
  • 如何在ipywidget按钮中显示全文?

    我正在创建一个ipywidget带有一些文本的按钮 但按钮中未显示全文 我使用的代码如下 import ipywidgets as widgets from IPython display import display button wid
  • Xcode 异步单元测试在主线程上等待

    我正在尝试使用 Xcode 中的单元测试来测试一些异步代码 但主线程被阻塞 问题在于 某些正在测试的代码期望从 iOS 类 AVFoundation 接收回调 但是 AVFoundation 类似乎只会在主线程上回调 问题是 如果我正在进行
  • Pygame:有没有简单的方法可以找到按下的任何字母数字的字母/数字?

    我目前正在开发的游戏需要让人们以自己的名义在高分板上计时 我对如何处理按键有点熟悉 但我只处理过寻找特定的按键 有没有一种简单的方法可以按下任意键的字母 而不必执行以下操作 for event in pygame event get if
  • 使用 \r 并打印一些文本后如何清除控制台中的一行?

    对于我当前的项目 有一些代码很慢并且我无法使其更快 为了获得一些关于已完成 必须完成多少的反馈 我创建了一个进度片段 您可以在下面看到 当你看到最后一行时 sys stdout write r100 80 n I use 80覆盖最终剩余的
  • Jupyter Notebook 内核一直很忙

    我已经安装了 anaconda 并且 python 在 Spyder IPython 等中工作正常 但是我无法运行 python 笔记本 内核被创建 它也连接 但它始终显示黑圈忙碌符号 防火墙或防病毒软件没有问题 我尝试过禁用两者 我也无法
  • 为字典中的一个键附加多个值[重复]

    这个问题在这里已经有答案了 我是 python 新手 我有每年的年份和值列表 我想要做的是检查字典中是否已存在该年份 如果存在 则将该值附加到特定键的值列表中 例如 我有一个年份列表 并且每年都有一个值 2010 2 2009 4 1989
  • 类型错误:预期单个张量时的张量列表 - 将 const 与 tf.random_normal 一起使用时

    我有以下 TensorFlow 代码 tf constant tf random normal time step batch size 1 1 我正进入 状态TypeError List of Tensors when single Te
  • 有人用过 Dabo 做过中型项目吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我们正处于一个新的 ERP 风格的客户端 服务器应用程序的开始阶段 该应用程序是作为 Python 富客户端开发的 我们目前正在评估 Dabo
  • Python:如何将列表列表的元素转换为无向图?

    我有一个程序 可以检索 PubMed 出版物列表 并希望构建一个共同作者图 这意味着对于每篇文章 我想将每个作者 如果尚未存在 添加为顶点 并添加无向边 或增加每个合著者之间的权重 我设法编写了第一个程序 该程序检索每个出版物的作者列表 并
  • 使用 Python 的 matplotlib 选择在屏幕上显示哪些图形以及将哪些图形保存到文件中

    我想用Python创建不同的图形matplotlib pyplot 然后 我想将其中一些保存到文件中 而另一些则应使用show 命令 然而 show 显示all创建的数字 我可以通过调用来避免这种情况close 创建我不想在屏幕上显示的绘图
  • Rocket UniData/UniVerse:ODBC 无法分配足够的内存

    每当我尝试使用pyodbc连接到 Rocket UniData UniVerse 数据时我不断遇到错误 pyodbc Error 00000 00000 Rocket U2 U2ODBC 0302810 Unable to allocate
  • 从列表指向字典变量

    假设你有一个清单 a 3 4 1 我想用这些信息来指向字典 b 3 4 1 现在 我需要的是一个常规 看到该值后 在 b 的位置内读写一个值 我不喜欢复制变量 我想直接改变变量b的内容 假设b是一个嵌套字典 你可以这样做 reduce di

随机推荐

  • 如何使用 PHP 从 JSON 中提取和访问数据?

    这是一个一般性的参考问题和答案 涵盖许多永无休止的问题 如何访问 JSON 中的数据 问题 它在这里处理在 PHP 中解码 JSON 并访问结果的广泛基础知识 我有 JSON type donut name Cake toppings id
  • Keycloak - 通过 /realms/{realm}/protocol/openid-connect/userinfo 获取用户信息时出现 401 响应 (USER_INFO_REQUEST_ERROR)

    我使用以下 Docker 命令在本地部署了 Keycloak docker run p 8080 8080 e KEYCLOAK ADMIN admin e KEYCLOAK ADMIN PASSWORD 管理员 quay io keycl
  • Blazor oauth2 被 CORS 阻止

    我在服务器端有一个控制器 如下所示 HttpGet public IActionResult Test string returnUrl return Challenge new AuthenticationProperties Redir
  • 允许内存大小 * 字节耗尽,在 php 中

    我在 php ini 中遇到 内存不足 错误 我知道它可以用 ini set memory limit 64M 之类的方法来修复 但我不想这样做 因为脚本的这么多内存是不正常的 我有一些报告非常大 以至于我非常需要内存 但通常不需要 问题是
  • Gmail 和日历 API 的 nextPageToken 会被记住多长时间?

    Gmail 和日历 API 返回nextPageToken响应中的值users messages list and events list需要分页时的端点 如果值nextPageToken在对这些端点的下一个请求中提供 则返回下一页结果 我
  • UIButton 在 UIScrollView 的初始框架之外不可单击

    我遇到了 UIScrollView 的奇怪行为 即放大 UIScrollView 的 contentSize 后无法单击 UIButton 我想做的 使用 UIScrollView 显示表单 单击提交按钮后 滚动视图将放大一定的高度以显示更
  • 如何在 ASP.NET 5 RC1 MVC 中使用 IFormFile 保存上传的文件

    我将 ASP NET 5 RC 与 Visual Studio 2015 结合使用 我定义了一个 ViewModel public class TeamVM public IFormFile UploadedLogo get set 和一个
  • Phpunit,模拟 SoapClient 有问题(模拟魔术方法)

    我尝试使用以下代码来模拟 SoapClient soapClientMock this gt getMockBuilder SoapClient gt disableOriginalConstructor gt getMock soapCl
  • jQuery:计算 .each() 内 ajax 调用的成功次数

    我需要计算对列表中的每个项目成功执行 jQuery ajax 调用的次数 我从这里开始 但后来意识到由于 ajax 的 异步 部分 这不起作用 var numSuccessfullUpdates 0 saveMyListItems clic
  • 如何升级 NumPy?

    当我使用安装 OpenCV 时Homebrew https en wikipedia org wiki Homebrew 28package management software 29 brew 每当我运行此命令进行测试时 我都会遇到此问
  • 在 Vim 的搜索模式中使用大括号量词 \d{5}

    我似乎无法在 Vim 中使用这种模式 d 4 但只能使用 d d d d 搜索时 知道发生了什么事吗 note 我是 Vim 新手 I used in Normal Mode并输入了图案 d 4 or v d 4 read h magic欲
  • 对图中的着色点

    我想根据某些行索引对成对图中的点进行着色 这是我用来绘制一个变量与另一个变量的关系的代码 cases lt which rownames data no na in colnames tumor data controls lt which
  • Amazon Athena - 将时间戳转换为日期?

    看着日期 时间 Athena 文档 https prestodb io docs 0 172 functions datetime html 我没有看到执行此操作的函数 这让我感到惊讶 我看到的最接近的是date trunc week ti
  • 从另一个 DataFrame 的索引列表中提取 DataFrame

    我有一个数据帧 A 和一个索引列表 I 我想生成 获取一个数据帧 B 它仅包含原始数据帧 A 的索引 I 中的数据 我怎样才能实现这个目标 假设I 1 3 我试过这个A filter items I axis 0 这是正确的方法吗 还是有更
  • setTimeout() 和 setInterval() 之间的区别[重复]

    这个问题在这里已经有答案了 我试图根据我向下滚动页面的程度沿着 y 方向的大 div 移动一个小 div 但是我发现使用 setTimeout 和 setInterval 会给出两个完全不同的结果 实际上 setInterval 多次被浏览
  • 为什么这个阶乘算法不准确

    抱歉 我觉得问这个问题很愚蠢 并且准备好失去一半的分数 但为什么这个算法不起作用 它在一定程度上有效 数字 13 之后的阶乘有点偏离 例如 在数十万位及以后的数字并不完全匹配 include
  • 如何将RGB图像转换为CMYK图像?

    我想将 RGB 图像转换为 CMYK 这是我的代码 第一个问题是 当我将每个像素除以 255 时 该值接近于零 因此生成的图像近似为黑色 第二个问题是我不知道如何将单通道结果图像转换为 4 通道 当然 我不确定下面代码中制作的CMYK是否正
  • 在 VBA 中创建计数器

    我想知道是否有一种有效的方法可以使用 vba 创建计数机制Worksheet SelectionChange事件 我想计算特定单元格被选择的次数 如果选择该单元格 则变量将增加 1 否则不会对变量进行任何更改 Dim S As String
  • SSL 证书可以由多个证书颁发机构签名吗?

    如果能稍微分散一点信任就好了 这样我们在任何情况下都不必只依赖一个根 是否可以有一个证书由多个 CA 签署 No the X509证书格式 https www rfc editor org rfc rfc5280直到版本 3 的设计都只包含
  • 在 python @patch 装饰器中使用 self

    我正在尝试使用python的mock patch来用nose实现单元测试 class A def setUp self self b 8 contrived example patch object module class functio