将python mockito与python unittes集成

2024-10-01 15:29:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在将mockito与pythonunittest集成。我不熟悉单元测试,但对单元测试范式肯定不是新的。我想用mockito来创建和嘲弄类。 我找不到任何关于mockitopython unittest集成和使用的好文档。在

莫基托是最好的方法吗?在

它的含义是什么?在

有人能指导我吗?在


Tags: 方法文档单元测试unittest指导含义mockito范式
1条回答
网友
1楼 · 发布于 2024-10-01 15:29:15

我发现mock的文档比mockito的文档更容易理解。它现在是标准库的一部分。在

python mockito lilbrary正在尝试重新构建Java mockito库。因此,对于同时使用Java和Python的人来说,它是非常有用的,tp使之更容易实现。如果你不再使用javamockito,我看不出有理由这么做。在

也许你的答案是使用mock,因为你在问“mockito是最好的方法吗?”在

来自文档:http://www.voidspace.org.uk/python/mock/getting-started.html#using-mock


下面的简单ProductionClass有一个更接近的方法。如果它是用对象调用的,那么它对它调用close。在

>>> class ProductionClass(object):
...     def closer(self, something):
...         something.close()
...

所以为了测试它,我们需要用close方法传入一个对象,并检查它是否被正确调用。在

^{pr2}$

通常,您希望跟踪对方法的不止一个调用。mock_calls属性记录对mock的子属性以及它们的子属性的所有调用。在

>>> mock = MagicMock()
>>> mock.method()
<MagicMock name='mock.method()' id='...'>
>>> mock.attribute.method(10, x=53)
<MagicMock name='mock.attribute.method()' id='...'>
>>> mock.mock_calls
[call.method(), call.attribute.method(10, x=53)]

如果对mock_调用进行断言,并且调用了任何意外的方法,则断言将失败。这很有用,因为除了断言已进行了预期的调用外,还需要检查它们是否按正确的顺序进行,并且没有其他调用:

您可以使用call对象构造列表,以便与mock\u调用进行比较:

>>> expected = [call.method(), call.attribute.method(10, x=53)]
>>> mock.mock_calls == expected
True

在模拟对象上设置返回值非常简单:

>>> mock = Mock()
>>> mock.return_value = 3
>>> mock()
3

当然,您也可以对mock上的方法执行相同的操作:

>>> mock = Mock()
>>> mock.method.return_value = 3
>>> mock.method()
3

返回值也可以在构造函数中设置:

>>> mock = Mock(return_value=3)
>>> mock()
3

如果需要在mock上设置属性,只需执行以下操作:

>>> mock = Mock()
>>> mock.x = 3
>>> mock.x
3

相关问题 更多 >

    热门问题