You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FastAPI TDD测试中如何mock validate_dates抛出WrongDataFormat异常

解决方法

核心原理

Python的mock需要遵循「在哪里调用,就mock哪里」的规则,你路由逻辑中是在endpoints.datalake模块下调用的DaService.validate_dates类方法,所以直接mock这个路径下的方法即可。

修正后的测试用例

def test_wrong_date_format_response():
    # mock对应路径下的validate_dates方法,指定抛出WrongDataFormat异常
    with mock.patch("endpoints.datalake.DaService.validate_dates") as mock_validate:
        mock_validate.side_effect = WrongDataFormat("日期格式错误")
        # 修正原有params的语法错误,补全start参数的key
        response = client.get(
            '/xxxxx',
            params = {'start': '2021-08-28', 'end': '2021-12-25'}
        )
        # 断言校验
        assert response.status_code == 400
        assert "日期格式错误" in response.json()["detail"]
        # 可选校验mock方法确实被调用,参数符合预期
        mock_validate.assert_called_once_with("2021-08-28", "2021-12-25")

说明

  • side_effect参数可以指定mock对象被调用时抛出的异常,完全符合你需要模拟校验失败的场景
  • 你原有测试代码的params参数写漏了start的key,直接写了值,会导致请求参数不符合要求,所以需要先修正这个语法问题

内容的提问来源于stack exchange,提问作者Bemojo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 16:18:01