mock object library 可用于为 Redis 创建 Mock 实例,returns a value 用于特定方法调用,例如:
from unittest.mock import Mock
def test_redis():
mock_redis = Mock()
mock_redis.get.return_value = "2020-12-31T00:00:00".encode()
function_to_test(mock_redis)
如果需要模拟一个函数,使得该函数不被实际调用,而是在被测试的函数内部使用,则可以使用patch decorator,如下所示:
from unittest.mock import patch
@patch("package.module.function_to_mock")
def test_redis(mock_function_to_mock):
mock_function_to_mock.get.return_value = "2020-12-31T00:00:00".encode()
function_to_test()
这可用于模拟您正在测试的函数内的烧瓶缓存相关代码。
编辑
对于您的情况,我相信您可能需要执行以下操作:
from unittest.mock import patch
@patch("package.module.func2")
def test_func_1(mock_func2):
mock_func2.return_value = "Test value"
func_1()
mock_func2.assert_called_once()
这里 func2()
是模拟的,它的返回值设置为 "Test value"
,所以当它在 func_1()
变量内部调用时,x
等于 "Test value"
>
注意:传递给 patch()
的路径必须是导入 func2()
的位置,而不是定义 func2()
的模块。
本文链接:https://www.f2er.com/1174661.html