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

requests_mock的Mocker中url参数可否用通配符?搭配pytest如何实现url模式匹配

结论

requests-mock默认不支持直接在URL字符串中加*作为通配符的匹配方式,你写的带*的URL只会匹配路径中实际包含*字符的请求,无法命中你真实调用的接口地址。

替代方案

除了使用requests.ANY匹配所有请求外,还有两种更精准的匹配方案可以实现你要的通配符效果:

  • 前缀匹配
    在注册mock规则时添加prefix=True参数,所有以你填写的URL为前缀的请求都会命中规则,示例:
with requests_mock.Mocker() as m:
    m.get(
        "http://api.openweathermap.org/geo/1.0/direct/",
        exc=request_exceptions.Timeout,
        prefix=True
    )
    # 后续测试逻辑不变
  • 正则匹配
    如果需要更复杂的匹配规则,可以直接传入正则表达式作为URL参数,示例:
import re

with requests_mock.Mocker() as m:
    m.get(
        re.compile(r"^http://api.openweathermap.org/geo/1\.0/direct/.*"),
        exc=request_exceptions.Timeout,
    )
    # 后续测试逻辑不变

两种方案都可以替代你想要的*通配符效果,同时比requests.ANY的匹配范围更可控,避免误匹配其他不相关的请求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 16:57:03