如何解决如何键入包裹在 Mock 中的提示对象?
我通常使用 unittest.mock.Mock
的 wraps
功能来创建功能齐全的间谍对象。
这是一个在运行时可以正常工作的示例:
from threading import Event
from typing import Union
from unittest.mock import Mock
spy_event: Union[Mock,Event] = Mock(wraps=Event())
spy_event.set()
assert spy_event.is_set()
# How can I type hint so this error doesn't show up from mypy?
spy_event.set.assert_called_once_with() # error: Item "function" of
# "Union[Any,Callable[[],None]]" has no attribute "assert_called_once_with"
您可以看到,Union[Mock,Event]
类型提示不起作用。
如何正确键入提示包裹在 Mock
中的对象?
版本
Python==3.8.6
mypy==0.812
解决方法
spy_event
只是一个 Mock
。将其注释为 Mock
:
spy_event: Mock = Mock(wraps=Event())
我不知道你为什么要这样做 Union
- 你可能误解了 Union
的意思。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。