问题标签 [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.

0 投票
1 回答
3371 浏览

python - 在 Python 中模拟链式调用

我正在尝试使用unittestmock库测试以下类:

我如何测试当我创建一个实例时Connection,取决于实例的返回Session,我断言是否self.some_info与我期望的值一致?

我希望使用模拟库。在其文档中,我有一个模拟链式调用的示例(http://www.voidspace.org.uk/python/mock/examples.html#mocking-chained-calls),但我不太清楚我怎么能适应我的问题。

该方法在实例Session.load(cookie)中设置一些属性。Session我想为我的每个cookie值的测试设置这个固定值。

0 投票
1 回答
545 浏览

python - 如何检查日志消息和称为单元测试的方法?

我正在使用 Django 1.3,需要检查日志系统中的输出和交互次数。对于日志记录,我使用的是 Django-Sentry,尽管它看起来就像普通的 Python 记录器一样工作。

我正在使用 python-mockito 进行模拟,如果可能的话,我想检查调用不同方法的次数以及它们返回的消息。

我正在尝试执行类似以下操作的检查:

也能够检查参数会很好。

models.py

tests.py

关于如何捕捉输出的任何建议?

0 投票
4 回答
45880 浏览

python - 具有多次调用方法的 Python Mock 对象

我有一个正在测试的类,它具有另一个类的依赖项(其实例被传递给 CUT 的 init 方法)。我想使用 Python Mock 库来模拟这个类。

我所拥有的是这样的:

这很好,但是“methodfromdepclass”是一个参数化方法,因此我想创建一个模拟对象,根据传递给 methodfromdepclass 的参数,它返回不同的值。

我想要这种参数化行为的原因是我想创建包含不同值的 ClassUnderTest 的多个实例(其值由从 mockobj 返回的内容产生)。

有点像我在想的(这当然行不通):

我如何实现这种“ifcallwith”的语义?

0 投票
1 回答
13736 浏览

python - 在 python 中模拟文件对象或可迭代对象

哪种方式适合使用模拟库来模拟和测试由open()返回的 iters 对象的代码?

whitelist_data.py

这是我尝试测试它的方法。

结果python tests.py是:

UPD:感谢 Adam,我重新安装了 mock library( pip install -e hg+https://code.google.com/p/mock#egg=mock) 并更新了 tests.py。奇迹般有效。

0 投票
3 回答
22665 浏览

python - 获取模拟 file.read() 的实际返回值

我正在使用python-mock来模拟文件打开调用。我希望能够以这种方式传递假数据,这样我就可以验证read()正在调用以及使用测试数据,而不会在测试中触及文件系统。

这是我到目前为止所得到的:

正如我所假设的那样,它的输出是<mock.Mock object at 0x8f4aaec>intead 的。'test'我在构建这个模拟时做错了什么?

编辑:

看起来像这样:

还有这个:

是不同的对象。使用 mock 作为上下文管理器使其返回一个 new Mock,而直接调用它会返回我在mock_open.return_value. 有任何想法吗?

0 投票
2 回答
257 浏览

python - 导入被测模块的模拟方法

假设我想测试这个模块:

此方法依赖于环境,因为它进行系统调用(需要特定的网络接口),因此它不能在测试机器上调用。

我想为该方法编写一个单元测试,以检查 ib_output 的处理是否按预期工作。因此我想模拟osutils.call并让它只返回测试数据。这样做的首选方法是什么?我必须做模拟或(猴子)修补吗?

示例测试:

0 投票
1 回答
809 浏览

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方法,同时考虑到一个类已传递给它,这会影响它返回的可迭代对象的内容。

谢谢!

0 投票
2 回答
46862 浏览

python - 你如何模拟一个 python 类并为每个实例化获取一个新的 Mock 对象?

好的,我知道手册
中提到了这一点,并且可能与和/或有关,​​但是一个简单直接的示例将极大地帮助我。 side_effectreturn_value

我有:

现在,我想对这个UUT类进行单元测试,并模拟ClassToPatch. 知道UUT该类将恰好实例化两个ClassToPatch对象,我希望 Mock 框架为每个实例化返回一个新的 Mock 对象,这样我以后就可以分别断言对每个对象的调用。

如何@patch在测试用例中使用装饰器来实现这一点?即,如何修复以下代码示例?

0 投票
2 回答
2634 浏览

python - 如何模拟python内置方法

我有一个 python 方法执行以下操作:

  1. 使用 os.listdir(/test) 列出目录下的文件
  2. 正则表达式匹配目录下的一些文件,将文件放在一个列表中
  3. 从列表中的文件中读取内容,做一些聚合的东西。

显然,我要测试的唯一有趣的部分是 2、3,所以 1 绝对是我想要模拟的东西。我开始在 setUp() 和 tearDown() 的 /test 文件夹下创建/删除补丁文件。但是同事告诉我,在 unitest 中进行 I/O 并不是一个好主意。

那么在我的单元中模拟构建 os.listdir() 的最佳方法是什么?或者有什么选择?

我可以做些什么来实现以下目标:

0 投票
2 回答
5063 浏览

python - 如何使用 Mock 库修补 Python 类

我无法为我的测试修补课程。我正在尝试修补属于 Scrapy 的东西——一个HtmlXpathSelector类。

这是一些代码:

结果是:

此示例与 Mock 库教程中的示例几乎相同。知道为什么它不起作用吗?