在 python 中模拟开放进行单元测试

2024-01-19

我想使用 unittest 测试一种使用上下文管理器从文件中读取的方法:

with open(k_file, 'r') as content_file:
    content = content_file.read()

我不想在我的系统上创建一个文件,所以我想模拟它,但目前我并没有取得多大成功。我发现了模拟打开 http://www.voidspace.org.uk/python/mock/helpers.html#mock-open但我真的不明白我应该如何使用它并在测试用例中将模拟作为 content_file 提供。例如有这样的post https://stackoverflow.com/a/19663055/914086在这里,但我不明白如何在不修改原始代码的情况下在测试用例中编写此代码。

有人能指出我正确的方向吗?


mock_open()是要走的路;你打补丁open在您的测试代码中,结果为mock_open() call:

mocked_open = unittest.mock.mock_open(read_data='file contents\nas needed\n')
with unittest.mock.patch('yourmodule.open', mocked_open, create=True):
    # tests calling your code; the open function will use the mocked_open object

The patch()上下文管理器 http://www.voidspace.org.uk/python/mock/patch.html#patch会放一个open()全局进入你的模块(我将其命名为yourmodule),绑定到mocked_open()- 产生的对象。该对象在调用时会假装生成一个文件对象。

这个模拟文件对象唯一的东西won'tdo Yet 是迭代;你不能做for line in content_file有了它,至少在当前版本中没有mock图书馆。看自定义unittest.mock.mock_open进行迭代 https://stackoverflow.com/questions/24779893/customizing-unittest-mock-mock-open-for-iteration解决方法。

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

在 python 中模拟开放进行单元测试 的相关文章

  • 通过 python 中的另外两个修改数组[重复]

    这个问题在这里已经有答案了 假设我们有三个一维数组 A 长度为 5 B 长度相同 示例中为5 C 更长 比如长度为 100 C最初用零填充 A给出索引C应更改的元素 它们可能会重复 以及B给出应添加到初始零的值C 例如 如果A 1 3 3
  • 键入的完整命令行

    我想获得输入时的完整命令行 This join sys argv 在这里不起作用 删除双引号 另外 我不想重新加入已解析和拆分的内容 有任何想法吗 你太迟了 当键入的命令到达 Python 时 您的 shell 已经发挥了它的魔力 例如 引
  • Flask 中“缺少 CSRF 令牌”,但它在模板中呈现

    问题 当我尝试登录 使用 Flask login 时 我得到Bad Request The CSRF session token is missing但令牌正在呈现 在模板中 secret key 已设置 并且我在本地运行localhost
  • Keras model.predict 函数给出输入形状错误

    我已经在 Tensorflow 中实现了通用句子编码器 现在我正在尝试预测句子的类概率 我也将字符串转换为数组 Code if model model type universal classifier basic class probs
  • 来自 pandas 数据帧的烛台图,用日期替换索引

    此代码给出了带有移动平均线的烛台图 但 x 轴位于索引中 我需要 x 轴位于日期中 需要做什么改变 import numpy as np import pandas as pd import matplotlib pyplot as plt
  • 为什么在连接两个字符串时 Python 比 C 更快?

    目前我想比较 Python 和 C 用来处理字符串的速度 我认为 C 应该比 Python 提供更好的性能 然而 我得到了完全相反的结果 这是 C 程序 include
  • 如何在Windows中的Python 3.9下pip安装pickle?

    我需要pickle https docs python org 3 9 library pickle html module pickle包安装在我的下面Python 3 9在 Windows 10 下 我尝试过的 当尝试与pip inst
  • 如何从hdfs读取文件[重复]

    这个问题在这里已经有答案了 我在 project1目录下的hadoop文件系统中有一个文本文件名mr txt 我需要编写 python 代码来读取文本文件的第一行 而不将 mr txt 文件下载到本地 但我无法从 hdfs 打开 mr tx
  • 设置高亮大括号的 vim 颜色主题

    如何更改突出显示大括号的 vim 配色方案 我希望实际编辑 vim 主题文件以使更改永久生效 问候 克雷格 匹配括号的自动高亮颜色称为MatchParen 您可以通过执行以下操作来更改 vimrc 中的颜色 highlight MatchP
  • 查找与另一列 Pandas 中的唯一值关联的列中的值的交集

    如果我有一个像这样的数据框 非常小的例子 col1 col2 0 a 1 1 a 2 2 b 1 3 b 2 4 b 4 5 c 1 6 c 2 7 c 3 我想要所有的交集col2当价值观与其独特性相关时col1值 因此在这种情况下 交集
  • 使用 subprocess.Popen() 或 subprocess.check_call() 时程序卡住

    我想从 python 运行一个程序并找到它的内存使用情况 为此 我正在使用 l a out lt in txt gt out txt p subprocess Popen l shell False stdout subprocess PI
  • 高级描述熊猫

    有没有像 pandas 那样更高级的功能 通常我会继续这样 r pd DataFrame np random randn 1000 columns A r describe 我会得到一份很好的总结 就像这样 A count 1000 000
  • 如何按 pandas 中的值对系列进行分组?

    我现在有一只熊猫Series与数据类型Timestamp 我想按日期对其进行分组 并且每组中有许多行具有不同的时间 看似显而易见的方法类似于 grouped s groupby lambda x x date 然而 熊猫的groupby按索
  • 无法导入QUERY_TERMS

    我正在运行一个网站Python and Django Django filters 2 1 installed Django 2 1 installed 当我运行时 我收到以下错误 importError Could not import
  • 从迭代器外部将 StopIteration 发送到 for 循环

    有几种方法可以打破一些嵌套循环 他们是 1 使用中断 继续 for x in xrange 10 for y in xrange 10 print x y if x y gt 50 break else continue only exec
  • 如何创建用于霍夫曼编码和解码的树?

    对于我的作业 我将对霍夫曼树进行编码和解码 我在创建树时遇到问题 并且陷入困境 不要介意打印语句 它们只是让我测试并查看函数运行时的输出是什么 对于第一个 for 循环 我从主块中用于测试的文本文件中获取了所有值和索引 在第二个 for 循
  • Python 读取未格式化的直接访问 Fortran 90 给出不正确的输出

    这是数据的写入方式 它是一个二维浮点矩阵 我不确定大小 open unit 51 file rmsd nn output form unformatted access direct status replace recl Npoints
  • 没有名为“turtle”的模块

    我正在学习并尝试用Python3制作贪吃蛇游戏 我正在进口海龟 我正在使用 Linux mint 19 PyCharm python37 python3 tk Traceback most recent call last File hom
  • pandas.read_fwf 忽略提供的数据类型

    我正在从文本文件导入数据框 我想指定列的数据类型 但 pandas 似乎忽略了dtype input 一个工作示例 from io import StringIO import pandas as pd string USAF WBAN S
  • 如何同时接受int和float类型的输入?

    我正在制作一个货币转换器 如何让 python 同时接受整数和浮点数 我就是这样做的 def aud brl amount From to ER 0 42108 if amount int if From strip aud and to

随机推荐

  • AngularJs ng-click $event 将子元素作为目标传递

    对于每个td表中的元素我有一个附加的 ng click 以下是每个表格单元格的 简化的 html td span event eventName span td
  • 无法从 Powershell 将 Chrome 设置为默认浏览器

    我正在运行以下 powershell 命令 chromePath Env ProgramFiles x86 Google Chrome Application chromeApp chrome exe chromeCommandArgs m
  • 外投影类型禁止使用方法

    我似乎无法理解 Kotlin 泛型 请帮忙 I read here https stackoverflow com questions 40519921 out projected type arraylist prohibits the
  • iOS - 检测促销代码应用内购买

    我有一个使用不可更新的应用内购买产品的应用程序 今天 我正在考虑为我的初始用户发布大约 100 个应用内促销代码 应用内购买在应用程序中按预期工作 但如果用户已经在 App Store 上兑换了促销代码 我无法弄清楚我需要在应用程序上进行什
  • 从ONU的UnData下载数据

    我想知道一段时间内一些国家的人口数量1960 2015 I found 包含这些数据 我有兴趣使用下载它Node js 我读到有一些APIs http data un org Host aspx Content API但我不明白如何使用它们
  • “multiprocessing.pool.Pool”中“context”参数的含义是什么?

    context是构造函数中的可选参数class multiprocessing pool Pool 文档 http python readthedocs io en stable library multiprocessing html m
  • iOS - 检测 UITableViewCell 被移出可见视图?

    一旦单元格在屏幕上不再可见 我就需要收到通知 UITableView 已经有一个名为的委托方法tableView didEndDisplayingCell forRowAtIndexPath 但这个委托方法永远不会被调用 是的 我确实有 U
  • 将域名重定向到heroku中的名称服务器?

    我已将我的域配置为 heroku IP 75 101 163 44 75 101 145 87 174 129 212 2 但它没有将我的应用程序重定向到我的域 错误说 该主机名上没有配置任何应用程序 也许应用程序所有者已将其重命名 或者您
  • 棉花糖精细和粗略位置权限

    我正在尝试访问ACCESS FINE LOCATION如果找不到访问权限ACCESS COARSE LOCATION 所以我请求这两个权限 但他们给了我相同的对话框 要求位置权限 我知道它们都在同一组 但谷歌说 Note 即使用户已经在同一
  • ZF2 SOAP“过程不存在”错误

    我在解决这个问题时遇到了严重的麻烦 我有一个包含 3 个模块的应用程序 这些模块通过 SOAP 提供不同的服务 发生的情况是 其中 2 个得到了以下响应 肥皂故障 文件 var www empreendimentos vendor zend
  • 有哪些算法可以让我模拟行星物理?

    我有兴趣制作一个 太阳系 模拟器 它可以让我模拟行星和恒星的旋转力和引力 我想说的是 模拟我们的太阳系 并以不同的速度模拟它 即观察地球和其他行星绕太阳旋转数天 数年等 我希望能够添加行星并改变行星质量等 看看它会如何影响系统 有谁有任何资
  • 卡在“正在将您重定向回应用程序。这可能需要一些时间”。 twitter 授权部分 - 使用 twittR 包

    我遇到了与中描述的完全相同的问题这个问题 https stackoverflow com questions 25856394 r twitter package authorization error 其中我遇到了类似的错误 但我按照说明
  • While 循环与 Promise 陷入无限循环

    我正在运行一个 while 循环 其中包含一个带有成功和失败回调的 Promise Promise 检查图像是否在 URL 上成功加载 查看下面的代码 我不断循环遍历命名照片列表1 jpg 2 jpg 依此类推example com 每次发
  • 在Java中,类上的静态方法有什么缺点吗?

    让我们假设在我的编码环境中已经强加了一条规则 或者经验法则 即类上不使用 修改或以其他方式需要任何实例变量来完成其工作的任何方法都将被设为静态 这样做是否有任何固有的编译时间 运行时间或任何其他缺点 已编辑以进一步澄清 我知道这个问题有点开
  • 谷歌地图API地理编码找到附近的KML

    我看到很多人在谷歌地图讨论组上询问这个问题 并进行了富有成效的讨论 所以我想我应该在这里尝试一下 目标 在 Google Maps API 中制作一个可搜索的地图 当输入用户地址时 该地图可以从数据集中返回 附近 的结果 到目前为止 我的方
  • 如何使用 git log 仅获取带有路径的文件名?

    我几乎使用了所有 git log 命令 但我还没有找到最好的方法来做到这一点 我只需要这个 只获取带有路径的文件名 没有其他 path filename txt path anotherfile ext 我的输入是 git log 命令的日
  • pyspark ImportError:无法导入名称累加器

    目标 我试图让 apache spark pyspark 在我的 pycharm IDE 中得到适当的解释 问题 我当前收到以下错误 ImportError cannot import name accumulators 我关注以下博客来帮
  • CreatedAtRoute 找不到与提供的值匹配的路由

    我在 NET Core 教程中遇到问题 它是用 NET Core 2 2 编写的 但我想使用当前版本 3 0 这也是我在我的设置与教程中发现的唯一区别 问题如下 我有一个 HttpPost 路由 其中 包含 CreatedAtRoute 调
  • Java maven开发速度慢

    我正在开发一个通过 Maven 构建的 war java 网站 目前 我必须进行更改 告诉maven 构建它们 然后部署到Tomcat 这是周围40秒 因此 我所做的每一个更改 我都必须等待 gt 40 秒才能看到更改 这变得非常令人沮丧
  • 在 python 中模拟开放进行单元测试

    我想使用 unittest 测试一种使用上下文管理器从文件中读取的方法 with open k file r as content file content content file read 我不想在我的系统上创建一个文件 所以我想模拟它