python - 使用装饰器模拟包装函数中的导入
问题描述
我想编写一个装饰器,在应用时模拟模拟函数的导入,例如,我想要以下代码:
from .decorator import mock_api
from .biz_logic import call_api
@mock_api
def test_api_mock():
call_api()
Wherecall_api
包含在直接或间接导入从模块调用的类Api
的模块api_library
中。我希望实现看起来像这样,但它不起作用
import mock
class MockApi:
pass
def mock_api(func):
@mock.patch(
"api_library.Api", mock.MagicMock(return_value=MockApi)
)
def wrapper(*args, **kwargs):
func(*args, **kwargs)
return wrapper
我受到moto
图书馆的启发,并希望完成与他们使用方便的装饰器所做的类似的事情,例如mock_s3
解决方案
推荐阅读
- python - Python:打印时如何换行?
- mysql - 如何求和汇总值并获得百分比?
- routes - Kong API网关路由的目的是什么
- php - 如何使用 fputcsv 和 explode 以分隔格式获取循环数据
- spring-boot - 有什么方法可以使用 spring-boot 自定义验证来使用两个自定义错误消息?
- css - 如何在 div 上正确定位垂直方向的文本?
- julia - 在 Julia 语言中理解步骤不能是零错误?
- c# - 如何将持久性数据添加到邮件项,使其对用户不可见
- php - 你可以在php中添加和排序多个列吗?
- groovy - 公共 groovy 方法必须是公共的,编译器说