【发布时间】:2018-09-04 19:48:29
【问题描述】:
我试图弄清楚如何在 helper.py 中模拟一个用于单元测试的多种方法中的函数。
我尝试使用补丁 @patch('project.helpers.function_0', new=lambda: True) 但没有奏效。
这样做的正确方法是什么?
谢谢。
更新
我需要为所有测试集覆盖 1 个函数和 1 个装饰器。
helpers.py
def myfunction(asd):
# ...
return asd
装饰器.py
def mydecorator(func):
@wraps(func)
def _wrapped_func(asd, *args, **kwargs):
# ...
return func(asd, *args, **kwargs)
return _wrapped_func
我是如何解决的
我想知道如何使用 mock,谢谢!
test_base.py
import project.decorators
import project.helpers
def myfunction_mock(asd):
# ...
return asd
helpers.myfunction = myfunction_mock
def mydecorator_mock(func):
# ...
decorators.mydecorator = mydecorator_mock
【问题讨论】:
-
您要查找的关键字参数是
new_callable,而不是new。见the docs -
对我不起作用,这样在测试中给出和额外的 arg,我需要覆盖所有测试的函数。 function_0 在我调用的其他方法中被调用...
-
究竟是什么不起作用?请使用您的测试用例代码更新您的问题并描述意外行为和期望行为。
-
@sytech 用更多数据更新问题,谢谢你的回答。
标签: python django python-3.x unit-testing