我有以下代码:
my_module.py
$pull: { "followers": {"_id": new ObjectId(current_id) }
我正在将pytest与pytest-mock和嘲笑者作为test_my_module.py中的装置
test_my_module.py
def my_func(number):
def nested_func(value):
'''
Doing some calculation
'''
return result
output = []
for i in range(number):
res = nested_func(i)
output.append(res)
return output
但是当我在py.test中运行时,出现错误:
def test_my_module(mocker):
expected_res = [1, 1, 1]
mocker.patch('nested_func', return_value=1)
from my_module import my_func
assert my_func(3) == expected_res
有什么方法可以模拟ocker.patch函数\方法,这些方法在测试模块中不可见,并且嵌套在该函数中,我想进行测试?
答案 0 :(得分:0)
作为@MrBean不来梅的后续活动,我认为一种解决方法是在my_func外部定义nested_func并在my_func内调用
def nested_func(value):
result = value + 2
return result
def my_func(number):
output = []
for i in range(number):
res = nested_func(i)
output.append(res)
return output
您的test_my_module
from my_module import my_func
def test_my_module(mocker):
expected_res = [1, 1, 1]
mocker.patch('my_module.nested_func', return_value=1)
assert my_func(3) == expected_res