【发布时间】:2021-09-03 08:16:28
【问题描述】:
我正在为我的 API 客户端编写测试。我需要模拟 get 函数,这样它就不会发出任何请求。因此,我不想返回Response 对象,而是想返回MagicMock。但随后 pydantic 提出了ValidationError,因为它要进入模型。
我有以下 pydantic 模型:
class Meta(BaseModel):
raw: Optional[str]
response: Optional[Response]
class Config:
arbitrary_types_allowed = True
引发:
> ???
E pydantic.error_wrappers.ValidationError: 1 validation error for OneCallResponse
E meta -> response
E instance of Response expected (type=type_error.arbitrary_type; expected_arbitrary_type=Response)
一种解决方案是添加Union 和MagicMock,但我真的不想更改测试代码。这不是办法。
class Meta(BaseModel):
raw: Optional[str]
response: Optional[Union[Response, MagicMock]]
class Config:
arbitrary_types_allowed = True
任何想法如何修补/模拟它?
【问题讨论】:
标签: python python-3.x unit-testing mocking pydantic