在 Python 中模拟导入模块

2024-02-04

我正在尝试对使用导入的外部对象的函数实施单元测试。

例如助手.py is:

import os
import pylons

def some_func(arg):
   ...
   var1 = os.path.exist(...)
   var2 = os.path.getmtime(...)
   var3 = pylons.request.environ['HTTP_HOST']
   ...

因此,当我为其创建单元测试时,我会进行一些模拟(在我的例子中是 minimock) 并替换对 pylons.request 和 os.path 的引用:

import helpers
def test_some_func():
    helpers.pylons.request = minimock.Mock("pylons.request")
    helpers.pylons.request.environ = { 'HTTP_HOST': "localhost" }
    helpers.os.path = minimock.Mock(....)
    ...
    some_func(...)
    # assert
    ...

这对我来说看起来不太好。

有没有其他更好的方法或策略来替代Python中导入的函数/对象?


使用 voidspace 的模拟库及其修补/包装功能。

http://www.voidspace.org.uk/python/mock/patch.html http://www.voidspace.org.uk/python/mock/patch.html

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

在 Python 中模拟导入模块 的相关文章

  • 如何使用 eval dataframe 方法在自定义函数中返回 numpy 数组或列表?

    我正在使用 python 3 X 我正在尝试使用eval https pandas pydata org pandas docs stable generated pandas eval html pandas eval数据框方法 包括这样
  • 在类中设置默认值

    我正在用 Python 创建一个类 但我不确定如何正确设置默认值 我的目标是为所有类实例设置默认值 也可以通过类方法对其进行修改 但是 我希望在调用方法后恢复初始默认值 我已经能够使用下面所示的代码使其工作 它不是很 漂亮 所以我怀疑这是解
  • 在 GUI 中显示 DHT11 的温度 - 自动刷新?

    Python 新手 开始接触 DHT11 温度 湿度传感器 Raspberry Pi 3 和 Python 3 我正在使用标准Adafruit DHT11 库 https github com adafruit Adafruit Pytho
  • 在 cherokee 和 uwsgi 上部署 Flask [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我正在尝试部署一个使用 cherokee 和 uwsgi 开发的 Flask Web 应用程序 我安装了 cherokee 和 uwsgi 并正在工作
  • Python groupby 无法按预期工作[重复]

    这个问题在这里已经有答案了 我正在尝试读取一个 Excel 电子表格 其中包含以下格式的一些列 column1 column1 AccountName column1 SomeOtherFeature column2 blabla colu
  • Python 比编译的 Haskell 更快?

    我有一个用 Python 和 Haskell 编写的简单脚本 它读取包含 1 000 000 个换行符分隔的整数的文件 将该文件解析为整数列表 对其进行快速排序 然后将其写入已排序的不同文件中 该文件与未排序的文件具有相同的格式 简单的 这
  • 让 argparse 收集但不响应标志

    我有一个脚本 它接受一些参数 使用其中一些参数来选择要运行的脚本 并将其余参数传递给该脚本 所以它看起来像这样 parser ArgumentParser parser add argument script choices a b par
  • Python bash 管道

    我想将 python 脚本的输出通过管道传输到 bash 脚本 到目前为止我所做的是尝试使用os popen sys subprocess 并试图给出一个管道的例子 os popen echo P 1 1 591336 4927369 1
  • Django 和 VirtualEnv 开发/部署最佳实践

    只是好奇人们如何结合 virtualenv 部署 Django 项目 更具体地说 如何使生产虚拟环境与开发计算机正确同步 我使用 git 进行 scm 但 git 存储库中没有 virtualenv 我应该这样做 还是最好使用 pip fr
  • Python 中的参数命名约定

    对于形式参数密切相关的函数 例如 def add two numbers n1 n2 return n1 n2 def multiply two numbers n1 n2 return n1 n2 如上所示 为两个函数中的参数指定相同的名
  • Python 删除额外的特殊 unicode 字符

    我正在 python 中处理一些文本 它内部已经采用 unicode 格式 但我想删除一些特殊字符并用更标准的版本替换它们 我目前有一条看起来像这样的线路 但它变得越来越复杂 我发现它最终会带来更多麻烦 tmp infile lower r
  • 优化 Django Queryset for 循环

    如何优化以下查询集 link goal for link in self child links all 我想摆脱 for 循环并只访问数据库一次 我有以下代码 class Goal models Model name models Cha
  • 如何定期向数组添加新元素,使其出现在每 500 个元素之后?

    如果我有一个包含 500k 个元素 仅限数字 的数组 列 我如何能够在每 500 个元素之后添加一个新元素 新的数字应该是相邻元素的平均值 例如 在元素 499 和 500 之间有一个值为 499 的值 500 的值 2 的新元素 依此类推
  • 在循环中动态添加方法时的范围问题

    我有一个 API 用于分析我的锻炼数据 我抓取的数据 跑卫 http runkeeper com 的网站 我的主类是一个子类pandas DataFrame 它基本上是表格数据的容器 它支持按列名索引 返回列值的数组 我想根据数据中存在的
  • 替换 Python 列表/字典中的值?

    好的 我正在尝试过滤传递给我的列表 字典并稍微 清理 它 因为其中有某些值我需要删除 所以 如果它看起来像这样 records key1 AAA key2 BBB key3 CCC key4 AAA 我如何快速轻松地运行所有内容并将 AAA
  • 在 Django 视图中访问其他项目中的模型导致“表不存在”错误

    基地项目结构 baseproject baseapp models py class BaseModel models Model 其他项目结构 project app views py urls py 项目 app views py im
  • Tensorflow“feed_dict”:对键值对使用相同的符号得到“TypeError:无法将 feed_dict 键解释为张量”

    我正在使用构建线性回归的 Tensorflow 示例 我的代码如下 import numpy as np import tensorflow as tf train X np asarray 3 3 4 4 5 5 6 71 6 93 4
  • django 创建多类型用户的最佳方法

    我想在 django 中创建多个用户 我想知道哪种方法是最好的 class Teachers models Model user models ForeignKey User is teacher models BooleanField d
  • 何时在 Gevent 中使用线程池

    我注意到 Gevent 有线程池对象 有人可以向我解释何时使用线程池以及何时使用常规池吗 gevent threadpool 和 gevent pool 有什么区别 当你有一段需要很长时间运行 几秒钟 并且不会导致 greenlet 切换的
  • 需要帮助编写扭曲的代理

    我想编写一个简单的代理 可以对请求页面正文中的文本进行打乱 我已经阅读了 stackoverflow 上的部分扭曲文档和其他一些类似的问题 但我有点菜鸟 所以我仍然不明白 我现在就是这样 不知道如何访问和修改页面 from twisted

随机推荐

  • 如何在 select2 选项中渲染 html

    In 这个例子 https select2 github io examples html data ajax从远程源加载的数据中 我可以看到图像和其他 html 元素呈现为选项 我想使用本地数组中的数据来完成同样的事情 我尝试按照文档中的
  • 设置 Display ="Dynamic" 时的 ASP.NET 验证器问题

    这是我的 ASP NET 代码 简单的 它有一个与必填字段验证器关联的文本框和一个提交按钮
  • 按钮单击事件未在视图翻转器的第二个视图中触发

    我有一个 xml 布局 当用户单击 下一个 按钮时 我会膨胀 填充下一个屏幕的数据 并为新视图中的图像按钮创建和设置 onclicklistener 然后我将此视图添加到我的主 ViewFlipper 中并对其调用 showNext 视图滑
  • 如何检查一个字符串中有多少个字符与另一个字符串匹配?

    我正在创建一个函数来检查随机字符串 看看它是否与引号匹配 如果不匹配 则两者有多少个匹配字符 到目前为止 这是我的代码 我只需要一个指针来看看它是如何完成的 谢谢 import random import string def genRan
  • XSLT 3.0 中的 JSON 到 XML 转换

    我正在尝试使用 json to xml 函数将 JSON 数据转换为 XSLT 3 0 中的 XML 但生成的 xml 不符合预期 例如输入 JSON glossary title example glossary GlossDiv tit
  • 为 Inno Setup 执行的 Postgres (psql) 进程设置 PGPASSWORD 环境变量

    我需要创建一个 PostgreSQL表空间 https www postgresql org docs current manage ag tablespaces html with 创新设置 https jrsoftware org is
  • 如何在 Python 中打开 Microsoft Excel 中的 csv 文件?

    base path os path dirname os path abspath file csvFilename os path join base path bcForecasting csv csvFile open csvFile
  • Android MapActivity:无法获取连接工厂客户端

    我正在尝试让地图演示正常工作 如 Google API 中提供的那样 示例项目 我正在使用 AVD 并尝试过版本 8 10 和 11 并得到同样的问题 我已经生成了自己的调试密钥并添加到项目中 我可以看到 应用程序上的地图启动 并且可以放大
  • 如何在 Android Studio Logcat 中突出显示过滤器/搜索命中

    我根据单个字符串过滤 Logcat 行 如下所示 但在那里 我面临着许多很长的队伍 而且我很难识别队伍中间想要的值 例如 在上图中 看到所有 聚合 关键字突出显示会非常方便 有没有办法在 Logcat 控制台上突出显示过滤 搜索命中 据我所
  • 禁用的按钮在 Firefox 和 Chrome 中看起来已启用

    禁用的按钮在 Firefox 和 Chrome 中看起来已启用 我在 ie firefox chrome 中打开同一页面 这是输出 仪表板 和 日历 被禁用 代理信息 已启用 这里我使用带有 css 的普通 asp 按钮 我该怎么办 您可以
  • 替换标签并保留属性[重复]

    这个问题在这里已经有答案了 可能的重复 更改标签名称但保留所有属性 https stackoverflow com questions 6482847 change the tag name but keep all the attribu
  • Javascript - 从数组中删除唯一元素

    我想知道如何从数组中删除唯一元素 例如 var arr 1 2 2 4 4 会回来 2 2 4 4 Where 1 2 3 会回来 因为所有元素都是独一无二的 我相信我需要将每个元素与数组中的每个其他元素进行检查 但我不确定如何进行此操作
  • 数据结构成员的成员初始化

    我刚刚遇到了一个尴尬的问题 这个问题很容易解决 但我不喜欢这样做 在我的类的构造函数中 我正在初始化数据成员的数据成员 这是一些代码 class Button private The attributes of the button SDL
  • 如何使用Mono的“缓存”方法

    我是 spring webflux 的初学者 在研究时我发现了一些代码 例如 Mono result someMethodThatReturnMono cache 缓存 这个名字告诉我关于缓存某些东西 但是缓存在哪里以及如何检索缓存的东西
  • android 从 JavascriptInterface 启动Activity

    简单的一般问题 Webview 连接到我的 JavascriptInterface 类 并且它肯定是有用的 但是 因为 JavascriptInterface 不扩展 Activity 所以我似乎无法使用 startActivity int
  • 锦标赛分组放置算法

    给定对手种子列表 例如种子 1 到 16 我正在尝试编写一种算法 该算法将导致头号种子在该轮中对阵最低的种子 第二名种子对阵第二低的种子 依此类推 将 1 和 16 2 和 15 等分组为 比赛 相当容易 但我还需要确保较高的种子将在后续回
  • 使用C#或Powershell扫描所有可用的无线网络并连接到特定的SSID

    我正在尝试编写一个脚本来扫描所有可用的无线网络并连接到特定网络 SSID 有人已经为此编写了示例代码吗 由于某些限制 我无法安装第三方软件 托管 wifi api 查看这篇相关文章 在 C 中管理无线网络连接 https stackover
  • 未捕获的类型错误:无法解析模块说明符“firebase/app”。相对引用必须以“/”、“./”或“../”开头

    我遵循了有关 WebRTC 视频聊天的 YouTube 教程 因此我尝试编写它 在 localhost 中它可以工作 但是当我将其上传到 firebase 托管时 它就会出现此错误 我能做些什么 我是网络开发新手 所以请耐心等待 主要 ht
  • 如何从字符串中删除0

    我正在看函数trim但不幸的是 这并没有删除 0 我该如何将其添加到其中 我应该使用str replace 编辑 我要修改的字符串是一个消息编号 如下所示 00023460 功能ltrim 00023460 0 正是我需要的 显然我不想使用
  • 在 Python 中模拟导入模块

    我正在尝试对使用导入的外部对象的函数实施单元测试 例如助手 py is import os import pylons def some func arg var1 os path exist var2 os path getmtime v