问题标签 [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 回答
2499 浏览

python - 如何在类的方法中模拟外部函数

我需要一些关于模拟的帮助。

我在 mymodule.py 中有以下代码:

现在我有测试代码:

0 投票
2 回答
249 浏览

python - 每次在python中“导入真实模块”时如何加载我的假模块?

我需要在 a 上进行测试function.py,并且在这个 function.py 中有一个 import 语句:

我不希望cleaner导入,因为它非常复杂。所以我尝试设置sys.path

fakes模块中,amy.functions.cleaner也存在但没有功能,它有效但它也会影响worker,我真的想要我的worker作品。

所以我的问题是有什么方法可以将这种清洁剂“模拟”成我的假清洁剂,我每次进口清洁剂时都需要我的假清洁剂更换它。

我试过sys.modules但失败了。

0 投票
2 回答
864 浏览

python - 如何在 python 中模拟“+”运算符(特别是 datetime.date + datetime.timedelta)

我在 Django 中解决了一些日期模拟问题,最后的障碍(我希望)是以下情况。我有一个 FakeDate 类,它派生自datetime.date,它模拟出来。

FakeDate 类按预期工作,但是在将 a 添加datetime.timedelta到 FakeDate 时出现问题,因为它返回一个真实的datetime.date,而不是模拟的。这很重要,因为在第三方库的其他地方有一个isinstance(value, datetime.date)检查,使用 timedelta 时总是会失败。

我希望 FakeDate + timedelta 添加返回 FakeDate 对象而不是 datetime.date 对象 - 我想这涉及以某种方式修补 timedelta - 但我如何/在哪里可以做到这一点?

0 投票
1 回答
59 浏览

python - 我可以在 python 中使用`mock`来模拟具有指定参数的方法吗?

我知道我是否这样做:

那么 my.factory 的所有东西都被模拟了,但实际上有一个方法:create_fruit(self, type)我想要如果我传入'apple'然后返回一个模拟'apple'对象,如果我传入 a'banana'然后返回一个'banana'对象。

这可以通过mock模块实现吗?我无法在文档中清楚地找到它: https ://pypi.python.org/pypi/mock

0 投票
1 回答
1454 浏览

python - 需要在 python 测试用例中模拟出一些基类行为

我的标题是相当描述性的,但这里有。假设我有这个设置。

现在,我有一种情况,我正在测试派生类,但在这样做时,我需要确保调用它的基类方法。我试着做这样的事情

我 100% 确定这个设置是错误的,因为

我知道我在 super 上做错了什么,有人知道吗?

0 投票
1 回答
411 浏览

lambda - 如何使用 python mock 覆盖带有 lambda 的函数?

我有一些代码用于Greenlet.spawn稍后调用一些代码。我刚刚发现该代码中出现了一个异常。它会被我们的测试捕获,但是在测试成功后,spawn 会让它运行。

我正在寻找一种修补方法,Greenlet.spawn以便它立即调用传入的函数。

我想修补测试类,而不必向测试添加参数。我已经将补丁用于很多其他东西,我觉得它必须能够做到这一点,但我的谷歌搜索都没有取得成果。

有任何想法吗?

0 投票
1 回答
1092 浏览

python - 模拟 Python 迭代以与 Sphinx 一起使用

我正在使用 Sphinx 记录一个依赖于 wxPython 的项目,使用autodocs扩展,以便它会自动从我们的文档字符串生成页面。autodocs扩展自动在你的每个模块上运行import,这对我们的包来说很好,但当我们import使用像 wxPython 这样的大型外部库时就会出现问题。因此,我没有让它从 wxPython 生成所有内容,而是使用unittest.mock 库模块(以前是外部包Mock)。最基本的设置适用于 wxPython 的大多数部分,但我遇到了一种我看不到简单方法的情况(可能是因为直到本周我对mock相对不熟悉)。

目前,我的conf.py文件末尾有以下内容:

对于所有 wxPython 模块但是wx.lib.newevent,这非常有效。但是,这里我使用newevent.NewCommandEvent()函数 [1] 为特定场景创建事件。NewCommandEvent()在这种情况下,我会在通话中收到带有 note的警告TypeError: 'Mock' object is not iterable

虽然我可以看到如何使用修补程序来处理这个以构建单元测试(我将在下个月这样做!),但我很难看到如何在我的 Sphinx 配置中以简单的级别集成它.

编辑:我也尝试过使用MagicMock();这仍然会在同一点产生错误,尽管它现在产生ValueError: need more than 0 values to unpack. 这似乎是朝着正确方向迈出的一步,但我仍然不确定如何处理这个问题,而不是为这个模块明确设置它。不过,也许这是最好的解决方案?


脚注

  1. 是的,这是一个函数,尽管命名约定使它看起来像一个类;wxPython 遵循整个 wxWidgets 工具包中使用的 C++ 命名约定。
0 投票
2 回答
2302 浏览

python - Python mock patch with sub module

I'm having trouble replacing a simple method that calls a function in another module. From what I understand of mocking, you have to reference the method being called (in it's context, and not the original). Below is a simplified version of what I'm running and hoping that it's something simple that I need to learn about mocks. Is patch intended to be used only for Class and Class methods or am I doing something else wrong here?

Thanks, Steve

myapp.models.py

myapp.backends._init_.py

test.py

0 投票
1 回答
18977 浏览

python - Python Mock - 如何像普通方法一样获得 MagicMock 的返回

例如:

所以,真正的问题是:如何获得该测试的返回而不是获得这个<MagicMock name='MyClass.foo()' id='191728464'>,或者如何处理这个 MagicMock 对象以获得该测试的返回,该测试应该是一个包含 3 个元素的元组,仅此而已?

任何建议,任何想法,任何争论都将受到欢迎。提前致谢!

0 投票
1 回答
653 浏览

python - Python:使用 Flask 模拟补丁错误

在编写 Python 时,我是一个完全的新手,更不用说测试它了。

这是我的 Flask 端点:

这是我的测试:

我收到的错误是:

我不确定出了什么问题。任何帮助将不胜感激!谢谢!