我在单独的文件中有一个函数,在另一个文件中有unittest,我的目标是获取该函数的实际返回值并对其进行编辑。
my_module.py
def function_to_test(a,b,c)(arg1,arg2,arg3):
data_to_send = Mongoclient.find({_id:'arg1'})
return data_to_send
def another_function():
# Do something
value_to_be_used = function_to_test(a,b,c)
another_function_call_in_another_module(value_to_be_used)
test_file.py
class Mytest(unittest.TestCase):
def test_one(self):
with patch(my_module.function1, return_value ='new data'): # the return_value is based on the original return value and should vary based on the original returned value
my_module.another_function()
新数据是原始数据+对原始数据的一些编辑。我该如何实现。
答案 0 :(得分:0)
side_effect
的模拟了。class Mytest(unittest.TestCase):
def test_one(self):
# the return_value is based on the original return value and
# should vary based on the original returned value
original = my_module.function_to_test
def patched(arg1, arg2, arg3):
original_result = original(arg1, arg2, arg3)
return original_result + ' @ new data'
with patch("my_module.function_to_test", side_effect=patched):
result = my_module.another_function()
assert result == 'old data @ new data', result
def function_to_test(arg1, arg2, arg3):
return 'old data'
def another_function_call_in_another_module(value_to_be_used):
return value_to_be_used
def another_function():
# Do something
a, b, c = 1, 2, 3
value_to_be_used = function_to_test(a, b, c)
return another_function_call_in_another_module(value_to_be_used)
一些参考文献: