问题描述
def my_wrapper(func: Callable):
@functools.wraps(func)
def wrapped_function(*args,**kwargs):
# do something
value = func(*args,**kwargs)
print(f"some log containing'{func.__qualname__}'")
return value
return wrapped_function
我使用这个包装器来记录一些关于带注释函数的输出。 我是这样用的:
def some_method(**kwargs):
# do something
some_object.fit = my_wrapper(some_object.fit)
some_object.fit(**kwargs)
到目前为止,一切都很好,就像一个魅力。 some_object.fit
被执行并按预期记录输出。
但是,接下来,我想使用 pytest-mock 编写一些测试,因为 some_object.fit
很慢,我想模拟它:
def test_some_method(self,mocker):
new_fit = mock.create_autospec(new_fit)
mocker.patch('some.class.fit') # note,that some_object before was of type some.class
some_method()
some.class.fit.assert_called_once_with()
这在 some_method()
上失败(下面的错误消息),但是一旦我取消注释我在第二个代码块中包装 fit
方法的行,它就会很好地工作。
错误消息表明,__qualname__
可能未移植并因此导致问题,但我不知道如何解决此问题:
self = <Magicmock name='fit' id='2071529901192'>,name = '__qualname__'
def __getattr__(self,name):
if name in {'_mock_methods','_mock_unsafe'}:
raise AttributeError(name)
elif self._mock_methods is not None:
if name not in self._mock_methods or name in _all_magics:
raise AttributeError("Mock object has no attribute %r" % name)
elif _is_magic(name):
> raise AttributeError(name)
E AttributeError: __qualname__
[project environment]\lib\unittest\mock.py:601: AttributeError
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)