此答案解决了Quuxplusone用户提供的赏金中提到的其他要求:

对于我的用例而言,重要的是它可以与MagicMock一起使用,即,它不需要我在构造Potato(在此示例中为spud)实例与调用spud.foo(在本例中)之间插入任何代码。我需要2939848654720599599044 从一开始就使用foo的模拟方法来创建,因为我无法控制spud的创建位置。

通过使用装饰器,可以在没有太多麻烦的情况下实现上述用例:

import unittest

import unittest.mock # Python 3

def spy_decorator(method_to_decorate):

mock = unittest.mock.MagicMock()

def wrapper(self, *args, **kwargs):

mock(*args, **kwargs)

return method_to_decorate(self, *args, **kwargs)

wrapper.mock = mock

return wrapper

def spam(n=42):

spud = Potato()

return spud.foo(n=n)

class Potato(object):

def foo(self, n):

return self.bar(n)

def bar(self, n):

return n + 2

class PotatoTest(unittest.TestCase):

def test_something(self):

foo = spy_decorator(Potato.foo)

with unittest.mock.patch.object(Potato, 'foo', foo):

forty_two = spam(n=40)

foo.mock.assert_called_once_with(n=40)

self.assertEqual(forty_two, 42)

if __name__ == '__main__':

unittest.main()

如果替换的方法接受在测试中修改的可变参数,则您可能希望初始化MagicMock *,而不是spy_decorator内部的MagicMock。

*这是我在PyPI上以copyingmock lib形式发布的文档中的食谱

python在材料模拟中的应用_材料模拟python_模拟-python模拟-在不妨碍实现的情况下修补方法...相关推荐

  1. python在材料模拟中的应用_材料模拟在计算机中使用的软件

    材料模拟在计算机中使用的软件 材料模拟简介 首先, 材料模拟是在传统材料设计上发展出来的技术. 传统的材料设计是根 据材料的性质和成分,通过理论计算推出目标材料的结构,然后通过实验合成. 这样的研究是 ...

  2. python代码在线回归中怎么运行_手把手教你用Python进行回归(附代码、学习资料)...

    原标题:手把手教你用Python进行回归(附代码.学习资料) 作者: GURCHETAN SINGH翻译:张逸校对:丁楠雅 本文共5800字,建议阅读8分钟. 本文从线性回归.多项式回归出发,带你用P ...

  3. python使用matplotlib可视化函数曲线、设置y轴为对数坐标(log scale)、默认情况下坐标轴为线性坐标

    python使用matplotlib可视化函数曲线.设置y轴为对数坐标(log scale).默认情况下坐标轴为线性坐标 目录

  4. python在材料模拟中的应用_基于Python的ABAQUS二次开发及在板料快速冲压成形模拟中的应用...

    2009 doi :10 1 3969/ j 1 issn 1 1007 2 2012 1 2009 1 04 1 013 基于 Python 的 ABAQUS 二次开发及在板料快速 冲压成形模拟中的 ...

  5. 怎么在python中输入矩阵_如何使用NumPy在Python中实现矩阵?

    矩阵被用作数学工具,在现实世界中有多种用途.在本文中,我们将按照以下顺序讨论Python中关于使用著名的NumPy库的矩阵的所有内容:什么是NumPy以及何时使用它?在NumPy 矩阵被用作数学工具, ...

  6. insert 语句的选择列表包含的项多于插入列表中的项_如何定义和使用Python列表(Lists)

    Python中最简单的数据集合是一个列表(list).列表是方括号内用逗号分隔的任何数据项列表.通常,就像使用变量一样,使用=符号为Python列表分配名称. 如果列表中包含数字,则不要在其周围使用引 ...

  7. python 如何判断一个函数执行完成_三步搞定 Python 中的文件操作

    当程序运行时,变量是保存数据的好方法,但变量.序列以及对象中存储的数据是暂时的,程序结束后就会丢失,如果希望程序结束后数据仍然保持,就需要将数据保存到文件中. Python 提供了内置的文件对象,以及 ...

  8. python字典修改键所对应值_详解如何修改python中字典的键和值

    我们知道python中字典是无序的,它们都是通过hash去对应的.一般的如果我们需要修改字典的值,只需要直接覆盖即可,而修改字典的键,则需要使用字典自带的pop函数,示例如下: t = {} t['a ...

  9. python在工程中的应用_将Flash应用于Python项目(转)

    lostpencil 2014-4-7 15:43:00 阅读(1737) 评论(4) == 基于本地的Python应用程序 == === 写在之前 === {{{ 这篇所说的是关于建立python调 ...

最新文章

  1. 前沿科技 | 中科院科学家在视觉学习行为的神经机制研究中取得进展
  2. win7加入域的脚本
  3. python3之subprocess常见方法使用
  4. PyTorch中MaxPool的ceil_mode属性
  5. win10下,cmd可以运行java,却不能运行javac
  6. C语言再学习 -- 再论内存管理
  7. Self-training在目标检测任务上的实践
  8. ECCV 2018最佳论文解读:基于解剖结构的面部表情生成
  9. 福爆 | 博客升级 .NET Core 3.0 又踩一坑
  10. my97DatePicker 自定义扩展方法(实现备忘录)
  11. [跟我学中小企业架构部署]之八:备份服务器部署
  12. python优先级排序_Python Numpy重新排列双向排序
  13. SSE指令介绍及其C、C++应用 zz
  14. 51单片机 呼吸灯 七彩呼吸灯
  15. 2016民用安防2.0时代重新起航
  16. 如何用Python获取网页指定内容
  17. 中国慕课moocpython答案_中国大学慕课moocPython编程基础答案
  18. 2020数学建模国赛A题解题思路
  19. vue v-for遍历动态展示元素数量
  20. 音视频+5G,远程医疗实时音视频解决方案

热门文章

  1. Java 10 – JEP 286:局部变量类型推断
  2. 使用Apache Ignite优化Spark作业性能(第1部分)
  3. 如何将JAR添加到Jetbrains MPS项目
  4. 使用Spring Integration重试RabbitMQ
  5. spring依赖日志_Spring:设置日志记录依赖项
  6. mvvm 后端_ZK实际应用:MVVM –与ZK客户端API一起使用
  7. spring依赖注入_Spring3:类型安全依赖项注入
  8. spring和maven_具有Spring和Maven教程的JAX–WS
  9. JavaFX列表示例
  10. 浏览器中的JavaFX