Python 如何获取不是httprety中最后一个的请求?

Python 如何获取不是httprety中最后一个的请求?,python,unit-testing,python-requests,httpretty,Python,Unit Testing,Python Requests,Httpretty,使用Python库,我可以为我的单元测试创建模拟HTTP响应。当我正在测试的代码运行时,不是我的请求到达第三方,而是截取请求,我的代码接收我配置的响应 然后我使用last_request(),可以检查我的代码请求的url、任何参数等 我想知道的是,我如何不仅访问最后一个请求,而且访问我的代码在最后一个请求之前发送的任何其他请求 这似乎是可能的。在文档中,它使用了一个名为latest\u requests的列表。比如说 但这似乎对我不起作用。我得到一个AttributeErrorAttribute

使用Python库,我可以为我的单元测试创建模拟HTTP响应。当我正在测试的代码运行时,不是我的请求到达第三方,而是截取请求,我的代码接收我配置的响应

然后我使用
last_request()
,可以检查我的代码请求的url、任何参数等

我想知道的是,我如何不仅访问最后一个请求,而且访问我的代码在最后一个请求之前发送的任何其他请求

这似乎是可能的。在文档中,它使用了一个名为
latest\u requests
的列表。比如说

但这似乎对我不起作用。我得到一个AttributeError
AttributeError:module'httprety'没有属性'latest\u requests'

下面是一些代码,说明了我正在尝试做什么以及从哪里获得AttributeError

import httpretty
import requests

httpretty.enable()
httpretty.register_uri(
    method=httpretty.GET,
    uri='http://www.firsturl.com',
    status=200,
    body='First Body'
)

httpretty.enable()
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(httpretty.latest_requests[-1].url)

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

谢谢

不幸的是,在阅读了文档并试图让代码正常工作之后,我只能将文档描述为明显不正确。似乎有几年前的| |声称将httprety。最新的| u请求作为一个真正的属性,但无论出于何种原因,它们都没有合并在一起

尽管如此,我还是通过打电话获得了以前所有请求的列表

 httpretty.HTTPretty.latest_requests
这将返回
HTTPrettyRequest
对象的列表。看到
httpretty.last_request()
返回一个
HTTPrettyRequest
对象,该属性可能就是您要查找的

不幸的是,
.url
没有在该类上定义(但它是这样的,这没有任何意义)。如果您想检查请求URL是否符合您的预期,您必须尝试自己重新构建它:

req = httpretty.HTTPretty.latest_requests[-1]
url = req.headers.get('Host', '') + req.path
如果要在查询字符串中传递任何内容,则必须从
req.querystring
重新构造该字符串,尽管该字符串未排序,因此您可能不希望将其转换为字符串以进行匹配。另外,如果您的所有请求都要到同一个域,您可以不使用主机部分,只需比较
req.path