gpt4 book ai didi

使用模拟的 Python 单元测试功能

转载 作者:行者123 更新时间:2023-11-28 16:46:27 25 4
gpt4 key购买 nike

我是 python 开发的新手,我不确定将模拟注入(inject)函数以进行单元测试的最佳方法是什么。

我有一个看起来像这样的函数:

import exampleModule

def func():
ls = createList()
exampleModule.send(ls)

在上面的代码中,我想模拟 exampleModule.send 方法。

我应该将方法作为参数传递给函数吗?喜欢:

def func(invokeMethod):
ls = createList()
invokeMethod(ls)

在单元测试中我可以通过模拟。但是我不希望调用者指定调用方法。

正确的做法是什么?

最佳答案

您可以使用 mock Michael Foord 的库,它是 Python 3 的一部分。它使这种模拟非常方便。一种方法是:

>>> from mock import patch
>>> import exampleModule
>>>
>>> def func():
... ls = []
... exampleModule.send(ls)
...
>>> with patch('exampleModule.send') as send:
... func()
... assert send.called

这里我们将它用作上下文管理器。但是您也可以使用 patch 作为装饰器。但是还有更多使用 mock 的方法,它可能会满足您在 mocking/stubbing 中的所有需求。

关于使用模拟的 Python 单元测试功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13367015/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com