python 在测试文件中的模块导入期间模拟函数调用

2024-03-19

我正在尝试模拟导入模块时执行的函数调用,下面是我遇到的问题的示例

app/module.py

    from util import get_param 

    PARAM = get_param('param_name')
    class sample():
         def run_sample(self):
             print(PARAM)

app/tests/test_module.py

from app import module
import unittest

class TestSample(unittest.TestCase):
    @mock.patch('app.module.get_param')
    def test_run_sample(self, mock_get_param):
        test_obj = module.sample()
        test_obj.run_sample()

这不起作用,它调用原始的 get_param 方法而不是模拟它。


我最近遇到过这种情况,我采用的解决方案有点hacky,涉及修改内部模块缓存。

#define mocked symbol
get_param = Mock()

class TestSample:

    @pytest.fixture
    def import_time_mock(self):
      # Trick python into thinking current test-file is target module
      orig = sys.modules["app.module"]
      sys.modules["app.module"] = sys.modules[__name__]

      nonlocal get_param 
      yield get_param

      # Restore modules cache
      sys.modules["app.module"] = orig

    def test_run_sample(self, import_time_mock):
        from app import module

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

python 在测试文件中的模块导入期间模拟函数调用 的相关文章

  • 如何手动计算分类交叉熵?

    当我手动计算二元交叉熵时 我应用 sigmoid 来获取概率 然后使用交叉熵公式并平均结果 logits tf constant 1 1 0 1 2 labels tf constant 0 0 1 1 1 probs tf nn sigm
  • 保存为 HDF5 的图像未着色

    我目前正在开发一个将文本文件和 jpg 图像转换为 HDF5 格式的程序 用HDFView 3 0打开 似乎图像仅以灰度保存 hdf h5py File Sample h5 img Image open Image jpg data np
  • 使用 python requests 模块时出现 HTTP 503 错误

    我正在尝试发出 HTTP 请求 但当前可以从 Firefox 浏览器访问的网站响应 503 错误 代码本身非常简单 在网上搜索一番后我添加了user Agent请求参数 但也没有帮助 有人能解释一下如何消除这个 503 错误吗 顺便说一句
  • Django 的内联管理:一个“预填充”字段

    我正在开发我的第一个 Django 项目 我希望用户能够在管理中创建自定义表单 并向其中添加字段当他或她需要它们时 为此 我在我的项目中添加了一个可重用的应用程序 可在 github 上找到 https github com stephen
  • 使用特定的类/函数预加载 Jupyter Notebook

    我想预加载一个笔记本 其中包含我在另一个文件中定义的特定类 函数 更具体地说 我想用 python 来做到这一点 比如加载一个配置文件 包含所有相关的类 函数 目前 我正在使用 python 生成笔记本并在服务器上自动启动它们 因为不同的
  • 如何使用 opencv.omnidir 模块对鱼眼图像进行去扭曲

    我正在尝试使用全向模块 http docs opencv org trunk db dd2 namespacecv 1 1omnidir html用于对鱼眼图像进行扭曲处理Python 我正在尝试适应这一点C 教程 http docs op
  • 用枢轴点拟合曲线 Python

    我有下面的图 我想用 2 条线来拟合它 使用 python 我设法适应上半部分 def func x a b x np array x return a x b popt pcov curve fit func up x up y 我想用另
  • 使用 Python 从文本中删除非英语单词

    我正在 python 上进行数据清理练习 我正在清理的文本包含我想删除的意大利语单词 我一直在网上搜索是否可以使用像 nltk 这样的工具包在 Python 上执行此操作 例如给出一些文本 Io andiamo to the beach w
  • 跟踪 pypi 依赖项 - 谁在使用我的包

    无论如何 是否可以通过 pip 或 PyPi 来识别哪些项目 在 Pypi 上发布 可能正在使用我的包 也在 PyPi 上发布 我想确定每个包的用户群以及可能尝试积极与他们互动 预先感谢您的任何答案 即使我想做的事情是不可能的 这实际上是不
  • 使用Python请求登录Google帐户

    在多个登录页面上 需要谷歌登录才能继续 我想用requestspython 中的库以便让我自己登录 通常这很容易使用requests库 但是我无法让它工作 我不确定这是否是由于 Google 做出的一些限制 也许我需要使用他们的 API 或
  • 使用字典映射数据帧索引

    为什么不df index map dict 工作就像df column name map dict 这是尝试使用index map的一个小例子 import pandas as pd df pd DataFrame one A 10 B 2
  • Python 2:SMTPServerDisconnected:连接意外关闭

    我在用 Python 发送电子邮件时遇到一个小问题 me my email address you recipient s email address me email protected cdn cgi l email protectio
  • 从Python中的字典列表中查找特定值

    我的字典列表中有以下数据 data I versicolor 0 Sepal Length 7 9 I setosa 0 I virginica 1 I versicolor 0 I setosa 1 I virginica 0 Sepal
  • Docker 中的 Python 日志记录

    我正在 Ubuntu Web 服务器上的 Docker 容器中测试运行 python 脚本 我正在尝试查找由 Python Logger 模块生成的日志文件 下面是我的Python脚本 import time import logging
  • 如何使用 pybrain 黑盒优化训练神经网络来处理监督数据集?

    我玩了一下 pybrain 了解如何生成具有自定义架构的神经网络 并使用反向传播算法将它们训练为监督数据集 然而 我对优化算法以及任务 学习代理和环境的概念感到困惑 例如 我将如何实现一个神经网络 例如 1 以使用 pybrain 遗传算法
  • Jupyter Notebook 找不到 Python 模块

    不知道发生了什么 但每当我使用 ipython 氢 原子 或 jupyter 笔记本时都找不到任何已安装的模块 我知道我安装了 pandas 但笔记本说找不到 我应该补充一点 当我正常运行脚本时 python script py 它确实导入
  • 从 NumPy ndarray 中选择行

    我只想从 a 中选择某些行NumPy http en wikipedia org wiki NumPy基于第二列中的值的数组 例如 此测试数组的第二列包含从 1 到 10 的整数 gt gt gt test numpy array nump
  • 如何在 Windows 命令行中使用参数运行 Python 脚本

    这是我的蟒蛇hello py script def hello a b print hello and that s your sum sum a b print sum import sys if name main hello sys
  • 使用for循环时如何获取前一个元素? [复制]

    这个问题在这里已经有答案了 可能的重复 Python 循环内的上一个和下一个值 https stackoverflow com questions 1011938 python previous and next values inside
  • Kivy - 单击按钮时编辑标签

    我希望 Button1 在单击时编辑标签 etykietka 但我不知道如何操作 你有什么想法吗 class Zastepstwa App def build self lista WebOps getList layout BoxLayo

随机推荐

  • 使用插值时添加换行符

    我有一些用于警报消息框的 html 使用插值 我可以重复使用相同的 html 来显示多个不同的警报消息 它看起来像这样 p myAlertMessage p 现在我想显示一条包含换行符的较长警报消息 但是 我似乎无法以任何会引入换行符的方式
  • 有没有一种简单的方法可以从 Kotlin 中的对象列表中获取数组?

    我希望能得到一个name列表中的数组MSetting 目前我用代码A来做 但是太复杂了 有没有简单的方法呢 Code A fun getName aList List
  • 如何安全地回显文字字符串“%I”?

    我怎样才能回显字符串 I以安全的方式 独立于是否echo命令行被放置在for I loop 例如 在命令提示符中 cmd gt gt gt rem echo is outside of for scope so this works gt
  • 为什么将模型上传到 HuggingFace 存储库的速度如此之慢?

    我有一个问题 我正在尝试将模型推送到 HuggingFace 存储库 问题是它说上传过去 16 小时 而这只是 pytorch model bin 文件 大约 850MB 我用的是LFS 我尝试手动将文件添加到存储库 这需要很长时间 我不愿
  • 在终端中根据括号或圆括号(仅限顶级)分割文本文件

    我有几个文本文件 utf 8 我想在 shell 脚本中处理它们 它们的格式并不完全相同 但如果我只能将它们分解成可食用的块 我就可以处理它 这可以用 C 或 python 编程 但我不喜欢 编辑 我用 C 编写了一个解决方案 看我自己的答
  • getCanonicalName 时抛出 ClassCircularityError

    异常堆栈 Exception in thread main java lang ClassCircularityError plugins agents Agent at java lang Class getDeclaringClass
  • 自定义工具快捷方式 Visual Studio

    有没有办法在 Visual Studio 中创建自定义工具的快捷方式 目前 我必须导航到解决方案中的工具 右键单击并运行自定义工具 如果我可以绑定快捷键或从工具栏运行该工具 那就太好了 有谁知道有什么方法可以做到这一点 我想你正在寻找这个
  • 错误消息是 (#12) bio 字段在 v2.8 及更高版本中已弃用

    我使用了 spring social facebook 的 2 0 3 RELEASE 版本和 Facebook 应用程序 api v2 8 我调用 Facebook 登录但返回了此消息 12 bio 字段在 v2 8 及更高版本中已弃用
  • Symfony / PHP - 存储单个值的最佳方式

    假设我有一个在 Symfony 3 2 Doctrine 上运行的应用程序 问题 存储会随着某些操作而改变的单个值的最佳方法是什么 第一个想法 我认为创建一个具有单个属性的实体将创建一个具有单个列的表 该列将具有单个值 更改某些操作 这不是
  • 用于拒绝请求的 NetflixOSS Zuul 过滤器

    我正在尝试在简单的 spring cloud Netflix Api 网关 反向代理 中使用 ZuulFilter 以便对自定义身份验证提供程序进行请求身份验证 通过 Rest 调用 过滤器应使用 401 拒绝未经授权的请求 并且不要将这些
  • 使用 JDBC 批量删除和插入

    我想知道是否可以使用批处理来执行参数化 DELETE 和 INSERT 语句 我知道如何插入多行 但是 我首先想做一个 DELETE 语句 这需要不同的参数 以下是我插入多个语句的方法 String query INSERT INTO TA
  • 如何将 Wicket 的 DownloadLink 与动态生成的文件一起使用?

    DownloadLink https ci apache org projects wicket apidocs 1 4 x org apache wicket markup html link DownloadLink html创建用于下
  • 类与二维数组

    在 PHP 中 二维数组和类哪个更好用 我举了一个例子来说明我的意思 Using a class class someClass public name public height public weight function constr
  • struct {0} 和 memset 0 有什么区别[重复]

    这个问题在这里已经有答案了 假设我们有这样的结构 struct A int x int y 有什么区别 A a 0 and A a memset a 0 sizeof A 没有任何 最终结果是两者都将结构体成员初始化为0 C99 标准 6
  • Java 有 IndexSet 和 Range 类吗?

    在 Objective C Cocoa 中 我们有NSIndexSet类 它通过保留范围数组来有效地存储一系列唯一索引 例如 集合 1 2 30 57 将存储为范围 1 30 和 57 而不是存储为 32 个数字的数组 这有助于以简单快速的
  • 表格滚动侦听器

    我正在尝试找出滚动表的事件 我可以获取左侧参数 例如使用 scrollTable offset left 但我无法添加其变化的监听器 我想要的就是监视表格左滚动参数的变化并将其应用到另一个 DOM 元素 这不是问题 我的表格的 HTML 示
  • C++ lambda回调触发事件

    我一直在尝试了解 C 中的回调功能 我想要实现的目标如下 我有两个对象 每个对象都有自己的线程 一个物体A有一个指向第二个对象的指针B 参见示例 class A public private std unique ptr b b class
  • XmlReaderSettings CheckCharacters=false 似乎不起作用

    我正在尝试反序列化来自 Rest 服务的 xml 响应 我正在实现 IXmlSerialized 因为 xml 相当具体 并且我进行自定义序列化 响应包含非法 xml 字符 但由于我无法修改 xml 所以我必须处理它们 解决方案似乎很简单
  • 将一组布尔值转换为数字

    这是我将用来获取一组三个布尔值并将其转换为 switch 语句的 int 的代码 int bits 0 bool a true b false c true 101 5 bits bits a lt lt 2 bits bits b lt
  • python 在测试文件中的模块导入期间模拟函数调用

    我正在尝试模拟导入模块时执行的函数调用 下面是我遇到的问题的示例 app module py from util import get param PARAM get param param name class sample def ru