问题标签 [python-mock]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 在 Python 中模拟链式调用
我正在尝试使用unittest
和mock
库测试以下类:
我如何测试当我创建一个实例时Connection
,取决于实例的返回Session
,我断言是否self.some_info
与我期望的值一致?
我希望使用模拟库。在其文档中,我有一个模拟链式调用的示例(http://www.voidspace.org.uk/python/mock/examples.html#mocking-chained-calls),但我不太清楚我怎么能适应我的问题。
该方法在实例Session.load(cookie)
中设置一些属性。Session
我想为我的每个cookie值的测试设置这个固定值。
python - 如何检查日志消息和称为单元测试的方法?
我正在使用 Django 1.3,需要检查日志系统中的输出和交互次数。对于日志记录,我使用的是 Django-Sentry,尽管它看起来就像普通的 Python 记录器一样工作。
我正在使用 python-mockito 进行模拟,如果可能的话,我想检查调用不同方法的次数以及它们返回的消息。
我正在尝试执行类似以下操作的检查:
也能够检查参数会很好。
models.py
:
tests.py
:
关于如何捕捉输出的任何建议?
python - 具有多次调用方法的 Python Mock 对象
我有一个正在测试的类,它具有另一个类的依赖项(其实例被传递给 CUT 的 init 方法)。我想使用 Python Mock 库来模拟这个类。
我所拥有的是这样的:
这很好,但是“methodfromdepclass”是一个参数化方法,因此我想创建一个模拟对象,根据传递给 methodfromdepclass 的参数,它返回不同的值。
我想要这种参数化行为的原因是我想创建包含不同值的 ClassUnderTest 的多个实例(其值由从 mockobj 返回的内容产生)。
有点像我在想的(这当然行不通):
我如何实现这种“ifcallwith”的语义?
python - 获取模拟 file.read() 的实际返回值
我正在使用python-mock来模拟文件打开调用。我希望能够以这种方式传递假数据,这样我就可以验证read()
正在调用以及使用测试数据,而不会在测试中触及文件系统。
这是我到目前为止所得到的:
正如我所假设的那样,它的输出是<mock.Mock object at 0x8f4aaec>
intead 的。'test'
我在构建这个模拟时做错了什么?
编辑:
看起来像这样:
还有这个:
是不同的对象。使用 mock 作为上下文管理器使其返回一个 new Mock
,而直接调用它会返回我在mock_open.return_value
. 有任何想法吗?
python - 导入被测模块的模拟方法
假设我想测试这个模块:
此方法依赖于环境,因为它进行系统调用(需要特定的网络接口),因此它不能在测试机器上调用。
我想为该方法编写一个单元测试,以检查 ib_output 的处理是否按预期工作。因此我想模拟osutils.call
并让它只返回测试数据。这样做的首选方法是什么?我必须做模拟或(猴子)修补吗?
示例测试:
python - 如何使用 Mock 框架更改模拟方法的输出?
我有一个如下模块:
会话是指与数据库对话的 SQLAlchemy 会话处理程序。出于测试目的,我需要能够模拟 Session 对象(或者可能只是 Session 对象?)中的查询方法,这样我就可以init_system
在不与数据库实际交互的情况下进行测试。我如何使用Mock 框架来做到这一点?
真正让我感到困惑的是,如果我模拟该query()
方法,我该如何更改依赖于传递给的类的所有方法的输出query()
?
我希望我可以按照以下方式做一些事情:
但是,我不知道我需要做什么才能my_mock_object
使其query()
正确模仿。我想它需要实现all()
返回迭代器的方法。而且,我知道我可以在返回的迭代器中创建更多的模拟对象,确保它们具有适当属性的值,例如:
而且,当然,我可以创建MagicMock
可以由 init_system 函数使用的那些对象的不同版本的迭代,例如,for value in var_one
在行中。
但我不知道如何将所有模拟对象拼凑在一起,所以我可以模拟出该Session.query
方法,同时考虑到一个类已传递给它,这会影响它返回的可迭代对象的内容。
谢谢!
python - 你如何模拟一个 python 类并为每个实例化获取一个新的 Mock 对象?
好的,我知道手册
中提到了这一点,并且可能与和/或有关,但是一个简单直接的示例将极大地帮助我。 side_effect
return_value
我有:
现在,我想对这个UUT
类进行单元测试,并模拟ClassToPatch
. 知道UUT
该类将恰好实例化两个ClassToPatch
对象,我希望 Mock 框架为每个实例化返回一个新的 Mock 对象,这样我以后就可以分别断言对每个对象的调用。
如何@patch
在测试用例中使用装饰器来实现这一点?即,如何修复以下代码示例?
python - 如何模拟python内置方法
我有一个 python 方法执行以下操作:
- 使用 os.listdir(/test) 列出目录下的文件
- 正则表达式匹配目录下的一些文件,将文件放在一个列表中
- 从列表中的文件中读取内容,做一些聚合的东西。
显然,我要测试的唯一有趣的部分是 2、3,所以 1 绝对是我想要模拟的东西。我开始在 setUp() 和 tearDown() 的 /test 文件夹下创建/删除补丁文件。但是同事告诉我,在 unitest 中进行 I/O 并不是一个好主意。
那么在我的单元中模拟构建 os.listdir() 的最佳方法是什么?或者有什么选择?
我可以做些什么来实现以下目标:
python - 如何使用 Mock 库修补 Python 类
我无法为我的测试修补课程。我正在尝试修补属于 Scrapy 的东西——一个HtmlXpathSelector类。
这是一些代码:
结果是:
此示例与 Mock 库教程中的示例几乎相同。知道为什么它不起作用吗?