Python模拟多个返回值

2024-01-11

我正在使用 pythons mock.patch 并希望更改每个调用的返回值。 这是警告: 正在修补的函数没有输入,因此我无法根据输入更改返回值。

这是我的代码供参考。

def get_boolean_response():
    response = io.prompt('y/n').lower()
    while response not in ('y', 'n', 'yes', 'no'):
        io.echo('Not a valid input. Try again'])
        response = io.prompt('y/n').lower()

    return response in ('y', 'yes')

我的测试代码:

@mock.patch('io')
def test_get_boolean_response(self, mock_io):
    #setup
    mock_io.prompt.return_value = ['x','y']
    result = operations.get_boolean_response()

    #test
    self.assertTrue(result)
    self.assertEqual(mock_io.prompt.call_count, 2)

io.prompt只是“输入”的独立于平台(python 2和3)的版本。所以最终我试图模拟用户的输入。我尝试过使用列表作为返回值,但这似乎不起作用。

您可以看到,如果返回值无效,我将在这里得到一个无限循环。所以我需要一种方法来最终改变返回值,以便我的测试真正完成。

(回答这个问题的另一种可能的方法是解释我如何在单元测试中模仿用户输入)


不是重复的这个问题 https://stackoverflow.com/questions/7665682/python-mock-object-with-method-called-multiple-times主要是因为我没有能力改变输入。

答案的评论之一这个问题 https://stackoverflow.com/questions/21927057/mock-patch-os-path-exists-with-multiple-return-values是沿着同样的路线,但没有提供答案/评论。


您可以分配一个iterable https://docs.python.org/3/glossary.html#term-iterable to side_effect,并且模拟将在每次调用时返回序列中的下一个值:

>>> from unittest.mock import Mock
>>> m = Mock()
>>> m.side_effect = ['foo', 'bar', 'baz']
>>> m()
'foo'
>>> m()
'bar'
>>> m()
'baz'

引用Mock()文档 https://docs.python.org/3/library/unittest.mock.html#unittest.mock.Mock:

If 副作用是一个可迭代对象,那么每次调用模拟都会返回可迭代对象的下一个值。

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

Python模拟多个返回值 的相关文章

  • 检测到通过 ChromeDriver 启动的 Chrome 浏览器

    我正在尝试在 python 中使用 selenium chromedriver 来访问 www mouser co uk 网站 然而 从第一次拍摄开始 它就被检测为机器人 有人对此有解释吗 此后我使用的代码 options Options
  • 在 python 3 中使用子进程

    我使用 subprocess 模块在 python 3 中运行 shell 命令 这是我的代码 import subprocess filename somename py in practical i m using a real fil
  • 从 Python 下载/安装 Windows 更新

    我正在编写一个脚本来自动安装 Windows 更新 我可以将其部署在多台计算机上 这样我就不必担心手动更新它们 我想用 Python 编写这个 但找不到任何关于如何完成此操作的信息 我需要知道如何搜索更新 下载更新并从 python 脚本安
  • Pyqt-如何因另一个组合框数据而更改组合框数据?

    我有一个表 有 4 列 这 4 列中的两列是关于功能的 一个是特征 另一个是子特征 在每一列中 所有单元格都有组合框 我可以在这些单元格中打开txt 我想 当我选择电影院作为功能时 我只想看到子功能组合框中的电影名称 而不是我的 数据 中的
  • 无故运行测试时 PyCharm 抛出“AttributeError: 'module' object has no attribute”

    因此 我有一个 Django REST Framework 项目 有一天它无法在 PyCharm 中运行测试 从命令行我可以使用它们来运行它们paver or the manage py直接地 曾经有一段时间 当我们没有在文件顶部导入类的超
  • Pandas dataframe:每批行的操作

    我有一个熊猫数据框df我想计算每批行的一些统计信息 例如 假设我有一个batch size 200000 对于每批batch sizerows 我想要一列的唯一值的数量ID我的数据框 我怎样才能做这样的事情呢 这是我想要的一个例子 prin
  • 单元测试报告的 XML 格式规范(DTD、XSD..)

    许多工具为单元测试报告生成和使用相同的 XML 文件格式 例子 source http junitpdfreport cvs sourceforge net junitpdfreport src resources examples tes
  • 字符串中的注释和注释中的字符串

    我正在尝试使用 Python 和 Regex 计算 C 代码中包含的注释中的字符数 但没有成功 我可以先删除字符串以删除字符串中的注释 但这也会删除注释中的字符串 结果会很糟糕 是否有机会通过使用正则表达式来询问不匹配注释中的字符串 反之亦
  • PyTorch 给出 cuda 运行时错误

    我对我的代码做了一些小小的修改 以便它不使用 DataParallel and DistributedDataParallel 代码如下 import argparse import os import shutil import time
  • Pandas:如何将数据框插入 Clickhouse

    我正在尝试将 Pandas 数据框插入 Clickhouse 这是我的代码 import pandas import sqlalchemy as sa uri clickhouse default localhost default ch
  • Alembic:如何迁移模型中的自定义类型?

    My User模型是 class User UserMixin db Model tablename users noinspection PyShadowingBuiltins uuid Column uuid GUID default
  • 如何在 Django 中使用基于类的视图创建注册视图?

    当我开始使用 Django 时 我几乎使用 FBV 基于函数的视图 来处理所有事情 包括注册新用户 但当我更深入地研究项目时 我意识到基于类的视图通常更适合大型项目 因为它们更干净且可维护 但这并不是说 FBV 不是 无论如何 我将整个项目
  • `pyqt5'错误`元数据生成失败`

    我正在尝试安装pyqt5使用带有 M1 芯片和 Python 3 9 12 的 mac 操作系统 我怀疑M1芯片可能是原因 我收到一个错误metadata generation failed 最小工作示例 directly in the t
  • 从 python 检测 macOS 中的暗模式

    我正在编写一个 PyQt 应用程序 我必须添加一个补丁 以便在启用暗模式的 Macos 上可以读取字体 app QApplication Fix for the font colours on macos when running dark
  • 字符串列表,获取n个元素的公共子串,Python

    我的问题可能类似于this https stackoverflow com questions 37514193 count the number of occurrences of n length not given string in
  • bs4 `next_sibling` VS `find_next_sibling`

    我在使用时遇到困难next sibling 并且类似地与next element 如果用作属性 我不会得到任何返回 但如果用作find next sibling or find next 然后就可以了 来自doc https www cru
  • 操作错误:(sqlite3.OperationalError) SQL 变量太多,同时将 SQL 与数据帧一起使用

    我有一个熊猫数据框 如下所示 activity User Id 0 VIEWED MOVIE 158d292ec18a49 1 VIEWED MOVIE 158d292ec18a49 2 VIEWED MOVIE 158d292ec18a4
  • 通过 Web 界面执行 python 单元测试

    是否可以通过 Web 界面执行单元测试 如果可以 如何执行 EDIT 现在我想要结果 对于测试 我希望它们是自动化的 可能每次我对代码进行更改时 抱歉我忘了说得更清楚 EDIT 这个答案此时已经过时了 Use Jenkins https j
  • tkinter:打开一个带有按钮提示的新窗口[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 用户如何按下 tkinter GUI 中的按钮来打开新窗口 我只需要非常简单的解决方案 如果代码也能被解释那就太好了 这
  • python 中的 after() 与 update()

    我是 python 新手 开始使用 tkinter 作为画布 到目前为止 我使用 update 来更新我的画布 但还有一个 after 方法 谁能给我解释一下这个函数 请举个例子 两者之间有什么区别 root after integer c

随机推荐

  • 使用ggplot绘制趋势线

    我使用 ggplot2 根据我的数据绘制趋势线 以下是我使用电子表格所做的事情 但我只想显示趋势线 如上图所示的黑线 而不是所有点 因为观察数量 gt 20 000 所以我尝试使用 ggplot2 做同样的事情 fig a lt ggplo
  • 如何将 xml 的嵌套层次结构转换为 sql 表

    使用 MSSQL 2008 和 XQUERY 考虑存储在表中的以下 XML
  • 您请求的商品无法购买

    我正在尝试将 Android Market 应用内购买集成到我的应用中 但不幸的是 每次我尝试购买真正的应用内产品时都会遇到恼人的错误 我已获取示例应用程序 Dungeons 并将其添加到我的应用程序中 我已更新公钥并将产品列表更新为以下内
  • SendGrid Automated Security 如何处理 SPF 记录? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我使用 SendGrid 并且有 2 个专用 IP 我的网站使用 SendGrid 发送电子邮件 我同时使用 G Suite 并且我个人使
  • WPF RichTextBox - 在当前插入符位置获取整个单词

    我在 WPF Richtextbox 上启用了拼写功能 并且希望在显示带有拼写建议的上下文菜单之前获取当前插入符号位置处拼写错误的单词 新方式 void richTextBox1 PreviewKeyDown object sender K
  • 将外部项目添加到 subversion 存储库 [重复]

    这个问题在这里已经有答案了 我希望我的 SVN 存储库具有以下结构 External MVC MVCConttrib NLog 我希望每个团队成员都能够查看外部存储库 这样就没有人需要查找底层项目的 SVN URL 但我希望存储库中的项目从
  • 从 webview 播放视频时如何设置横向方向

    我有一个带有视频链接的网络视图 该应用程序只是纵向方向 但当视频处于全屏状态并使用所有屏幕时 我需要更改方向 感谢您的帮助 把这个放在你的AppDelegate UIInterfaceOrientationMask application
  • 临时对象是 xvalue 吗?

    我目前正在撰写学位论文 其中还涉及对 C 11 背后理论的一些解释 这确实很好 因为 C 是我选择的编程语言 并且该标准或多或少是免费提供的 N3337 让您迷失方向在 然而 当我试图准确而详细地解释新的 xvalue 类别时 我遇到了困难
  • TDD:帮助编写可测试类

    我有一个快速的小应用程序 想尝试使用 TDD 进行开发 我从未使用过 TDD 实际上甚至不知道它是什么 直到我发现 ASP NET MVC 我的第一个 MVC 应用程序有单元测试 但它们很脆弱 耦合性强 需要太多维护 并且被放弃了 我是来学
  • 在 Windows 10 上安装适用于 python 3.6.1 的 pygtk

    Since PIL ImageGrab 给了我一些问题 我进一步阅读了这个主题 看来gtk是制作屏幕截图的更好解决方案 但我不明白哪些软件包实际上正在运行 哪些软件包已被弃用 试 pip install pygtk 给我 ERROR Cou
  • 将 DOC 转换为 PNG 时出现问题

    我有一个奇怪的问题 我有 dot 文件 我将其填充并转换为 doc 文件 然后我获取这个 doc 文件并将其转换为图像 问题是 图像在本地主机上是完美的 高质量 但在实时服务器上质量很差 我的问题是 如何保存高质量的 png 或任何其他 图
  • 如何在Python3中解码编码文字/字符串的numpy数组? AttributeError:'numpy.ndarray'对象没有属性'decode'

    在Python 3中 我有以下内容NumPy的数组strings Each string in the NumPy数组的形式为b MD18EE代替MD18EE 例如 import numpy as np print array1 b fir
  • 如何在.NET Core 3.0中为WPF应用程序引用System.Windows.Forms?

    我正在将 WPF 桌面应用程序从 NET Framework 迁移到 Core 3 0 我正在使用 System Windows Forms FolderBrowserDialog 现在我陷入了如何将此引用添加到 Core 项目的困境 没有
  • Pine Script:如何在每次价格更新时在标签上的图表时区中显示当前时间?

    我试图做一些看似微不足道的事情 但却遇到了各种各样的问题 每次当前价格更新时 我都想在标签上绘制某些基本信息 无论我的图表的时间范围如何 我能够准确地显示数量和价格信息 但是显示时间一直是一个挑战 我的第一次尝试是使用以下代码 if bar
  • 在 SCNShadable 入口点之间传递值

    在 OpenGL 程序中 您通常会在顶点着色器中声明类似的内容 varying bool aBooleanVariable 然后读取片段着色器中的值 你如何在一个框架内做到这一点 SCNShadable入口点 例如来自SCNShaderMo
  • 无法连接到kafka服务器

    我尝试使用 Kafka 0 9 0 版本和端口 9092 如果我使用telnet 我成功连接到这个地址 但我无法使用 Java API 连接到 Kafka 服务器 这是我的 Java 示例 完全使用官方提供的文档 Properties pr
  • 在 Haskell 中建模域数据[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在使用 Haskell 设计一个更大的 Web 应用程序 这纯粹是为了我的教育和兴趣 我首先写出我的域 值对象 一个例子是用户 这是我到目前
  • csv 文件中的反斜杠

    在我的应用程序中 我通过 sql 中的 load data local infile 文件名命令将 csv 文件读入数据库 如果某个字段中出现反斜杠 则相邻字段将被合并 将文件读入数据库时 如何忽略反斜杠 Example abcd efgh
  • 选择正确的方法在 android 中实现 google 地图

    我计划在 android 中创建一个具有以下功能的应用程序 显示源到目的地路线 显示反向路线 显示交通数据 显示备用路线 存储用户数据 除此之外 我想使用一些 Android 本机控件 例如图像按钮 文本框 地图上的对话框 现在在回顾这个之
  • Python模拟多个返回值

    我正在使用 pythons mock patch 并希望更改每个调用的返回值 这是警告 正在修补的函数没有输入 因此我无法根据输入更改返回值 这是我的代码供参考 def get boolean response response io pr