问题标签 [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 - 如何在类的方法中模拟外部函数
我需要一些关于模拟的帮助。
我在 mymodule.py 中有以下代码:
现在我有测试代码:
python - 每次在python中“导入真实模块”时如何加载我的假模块?
我需要在 a 上进行测试function.py
,并且在这个 function.py 中有一个 import 语句:
我不希望cleaner
导入,因为它非常复杂。所以我尝试设置sys.path
:
在fakes
模块中,amy.functions.cleaner
也存在但没有功能,它有效但它也会影响worker
,我真的想要我的worker
作品。
所以我的问题是有什么方法可以将这种清洁剂“模拟”成我的假清洁剂,我每次进口清洁剂时都需要我的假清洁剂更换它。
我试过sys.modules
但失败了。
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 - 但我如何/在哪里可以做到这一点?
python - 我可以在 python 中使用`mock`来模拟具有指定参数的方法吗?
我知道我是否这样做:
那么 my.factory 的所有东西都被模拟了,但实际上有一个方法:create_fruit(self, type)
我想要如果我传入'apple'
然后返回一个模拟'apple'
对象,如果我传入 a'banana'
然后返回一个'banana'
对象。
这可以通过mock
模块实现吗?我无法在文档中清楚地找到它:
https ://pypi.python.org/pypi/mock
python - 需要在 python 测试用例中模拟出一些基类行为
我的标题是相当描述性的,但这里有。假设我有这个设置。
现在,我有一种情况,我正在测试派生类,但在这样做时,我需要确保调用它的基类方法。我试着做这样的事情
我 100% 确定这个设置是错误的,因为
我知道我在 super 上做错了什么,有人知道吗?
lambda - 如何使用 python mock 覆盖带有 lambda 的函数?
我有一些代码用于Greenlet.spawn
稍后调用一些代码。我刚刚发现该代码中出现了一个异常。它会被我们的测试捕获,但是在测试成功后,spawn 会让它运行。
我正在寻找一种修补方法,Greenlet.spawn
以便它立即调用传入的函数。
我想修补测试类,而不必向测试添加参数。我已经将补丁用于很多其他东西,我觉得它必须能够做到这一点,但我的谷歌搜索都没有取得成果。
有任何想法吗?
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
. 这似乎是朝着正确方向迈出的一步,但我仍然不确定如何处理这个问题,而不是为这个模块明确设置它。不过,也许这是最好的解决方案?
脚注
- 是的,这是一个函数,尽管命名约定使它看起来像一个类;wxPython 遵循整个 wxWidgets 工具包中使用的 C++ 命名约定。
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
python - Python Mock - 如何像普通方法一样获得 MagicMock 的返回
例如:
所以,真正的问题是:如何获得该测试的返回而不是获得这个<MagicMock name='MyClass.foo()' id='191728464'>
,或者如何处理这个 MagicMock 对象以获得该测试的返回,该测试应该是一个包含 3 个元素的元组,仅此而已?
任何建议,任何想法,任何争论都将受到欢迎。提前致谢!
python - Python:使用 Flask 模拟补丁错误
在编写 Python 时,我是一个完全的新手,更不用说测试它了。
这是我的 Flask 端点:
这是我的测试:
我收到的错误是:
我不确定出了什么问题。任何帮助将不胜感激!谢谢!