我想编写一个装饰器,在应用时模拟模拟函数的导入,例如,我想要以下代码:
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