Mocking only a single method on an object(仅模拟对象上的单个方法)
问题描述
我熟悉其他语言中的其他模拟库,例如 Java 中的 Mockito,但 Python 的 mock
库让我感到困惑.
我想测试以下课程.
类 MyClassUnderTest(object):def 子方法(自我,*args):do_dangerous_things()def main_method(self):self.submethod("什么都没有.")
在我的测试中,我想确保在执行 main_method
时调用了 submethod
并且使用正确的参数调用它.我不希望 submethod
运行,因为它会做危险的事情.
我完全不确定如何开始使用它.Mock 的文档非常难以理解,我不确定要模拟什么或如何模拟它.
我怎样才能模拟 submethod
函数,同时保留 main_method
中的功能?
我想你要找的是 mock.patch.object
用 mock.patch.object(MyClassUnderTest, "submethod") 作为 submethod_mocked:submethod_mocked.return_value = 13MyClassUnderTest().main_method()submethod_mocked.assert_call_once_with(user_id, 100, self.context,self.account_type)
这里是小描述
patch.object(目标, 属性, new=DEFAULT,规格=无,创建=假,规格集=无,autospec=None, new_callable=None, **kwargs)
<块引用>
使用模拟对象修补对象(目标)上的命名成员(属性).
I'm familiar with other mocking libraries in other languages such as Mockito in Java, but Python's mock
library confuses the life out of me.
I have the following class which I would like to test.
class MyClassUnderTest(object):
def submethod(self, *args):
do_dangerous_things()
def main_method(self):
self.submethod("Nothing.")
In my tests, I'd like to make sure that the submethod
was called when main_method
was executed and that it was called with the right arguments. I don't want submethod
to run, as it does dangerous things.
I'm entirely unsure as to how to get started with this. Mock's documentation is incredibly hard to understand and I'm not sure what to even mock or how to mock it.
How can I mock the submethod
function, while leaving the functionality in main_method
alone?
I think what you are looking for is mock.patch.object
with mock.patch.object(MyClassUnderTest, "submethod") as submethod_mocked:
submethod_mocked.return_value = 13
MyClassUnderTest().main_method()
submethod_mocked.assert_called_once_with(user_id, 100, self.context,
self.account_type)
Here is small description
patch.object(target, attribute, new=DEFAULT,
spec=None, create=False, spec_set=None,
autospec=None, new_callable=None, **kwargs)
patch the named member (attribute) on an object (target) with a mock object.
这篇关于仅模拟对象上的单个方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:仅模拟对象上的单个方法


基础教程推荐
- 求两个直方图的卷积 2022-01-01
- 修改列表中的数据帧不起作用 2022-01-01
- Plotly:如何设置绘图图形的样式,使其不显示缺失日期的间隙? 2022-01-01
- 无法导入 Pytorch [WinError 126] 找不到指定的模块 2022-01-01
- PANDA VALUE_COUNTS包含GROUP BY之前的所有值 2022-01-01
- 包装空间模型 2022-01-01
- 使用大型矩阵时禁止 Pycharm 输出中的自动换行符 2022-01-01
- PermissionError: pip 从 8.1.1 升级到 8.1.2 2022-01-01
- 在Python中从Azure BLOB存储中读取文件 2022-01-01
- 在同一图形上绘制Bokeh的烛台和音量条 2022-01-01