我熟悉其他语言的其他模拟库,例如Java中的Mockito,但是Python的mock
库使我的生活变得混乱。
我有以下课程想测试。
class MyClassUnderTest(object):
def submethod(self, *args):
do_dangerous_things()
def main_method(self):
self.submethod("Nothing.")
在我的测试中,我想确保submethod
在main_method
执行时调用了,并使用正确的参数调用了它。我不想submethod
跑步,因为它会做危险的事情。
我完全不确定该如何开始。Mock的文档难以理解,而且我不确定该模拟什么或如何模拟它。
submethod
在main_method
单独保留功能的同时,如何模拟该功能?
我想你要找的是 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)
这是小描述
patch.object(target, attribute, new=DEFAULT,
spec=None, create=False, spec_set=None,
autospec=None, new_callable=None, **kwargs)
使用模拟对象在对象(目标)上修补命名成员(属性)。
所以我想做一些事情 但我得到了空异常
我试图模拟一个方法,从另一个方法调用,而不使用类对象。在指定的代码中,我想模拟methodA(),它调用methodB(),而不使用对象。 我无法更改现有类中的任何内容。 我已经尝试过: 莫基托。doReturn(“id”)。当(反对)。方法b(员工)
如何模拟返回已强制转换的模拟对象的方法。 试验方法。
我的测试用例是: 当我调用时,实际上不会调用此方法。如何在side中模拟方法的结果?
我试图在静态方法中模拟静态方法。 我想知道不使用任何框架是否可能。 有没有办法达到我的目的?
问题内容: 我正在寻找测试以下静态方法(特别是使用Doctrine模型)的最佳方法: 理想情况下,我将使用模拟对象来确保调用了“ fromArray”(具有提供的用户数据)和“ save”,但这是不可能的,因为该方法是静态的。 有什么建议么? 问题答案: PHPUnit的作者Sebastian Bergmann最近发表了一篇有关Stubbing和Mocking静态方法的博客文章。使用PHPUnit