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

如何在HTTPretty中获取非最后一次发送的请求?

解决HTTPretty无法访问latest_requests获取所有请求的问题

看起来你遇到的问题是因为HTTPretty版本差异或者属性访问路径不对导致的。下面给你几个可行的解决方案:

1. 升级HTTPretty到最新版本

latest_requests属性是在较新的HTTPretty版本中引入的,如果你的版本过旧,就会出现AttributeError。执行下面的命令升级:

pip install --upgrade httpretty

升级后,你的原有代码应该就能正常访问httpretty.latest_requests了。另外注意你的代码里重复调用了httpretty.enable(),其实只需要调用一次就够了,修改后的代码如下:

import httpretty
import requests

httpretty.enable()  # 只需要启用一次
httpretty.register_uri(
    method=httpretty.GET,
    uri='http://www.firsturl.com',
    status=200,
    body='First Body'
)
httpretty.register_uri(
    method=httpretty.GET,
    uri='http://www.secondurl.com',
    status=200,
    body='secondBody'
)

firstresponse = requests.get('http://www.firsturl.com')
secondresponse = requests.get('http://www.secondurl.com')

# 现在可以访问所有请求了
print("最后一次请求URL:", httpretty.latest_requests[-1].url)
print("第一次请求URL:", httpretty.latest_requests[0].url)

# clean up
httpretty.disable()
httpretty.reset()

2. 如果升级后仍无法访问,尝试直接访问内部模块的属性

在某些版本中,latest_requests并没有直接暴露在httpretty根模块下,而是在httpretty.httpretty子模块中。你可以尝试修改访问路径:

print(httpretty.httpretty.latest_requests[-1].url)

3. 手动捕获所有请求(兼容旧版本)

如果你因为某些原因无法升级版本,可以通过注册回调函数的方式手动记录所有请求:

import httpretty
import requests

# 用来存储所有请求的列表
all_requests = []

def record_request(request, uri, headers):
    all_requests.append(request)
    return (200, headers, 'First Body')

httpretty.enable()
# 第一个接口用回调函数记录请求
httpretty.register_uri(
    method=httpretty.GET,
    uri='http://www.firsturl.com',
    body=record_request
)
# 第二个接口用lambda函数记录请求
httpretty.register_uri(
    method=httpretty.GET,
    uri='http://www.secondurl.com',
    body=lambda req, uri, hdrs: (200, hdrs, 'secondBody') or all_requests.append(req)
)

firstresponse = requests.get('http://www.firsturl.com')
secondresponse = requests.get('http://www.secondurl.com')

# 遍历所有捕获的请求
for idx, req in enumerate(all_requests):
    print(f"第{idx+1}次请求URL: {req.url}")

httpretty.disable()
httpretty.reset()

这样不管用哪个版本的HTTPretty,都能获取到所有请求的信息啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:09:43