Python 使用requests\u mock检查请求上的查询字符串

Python 使用requests\u mock检查请求上的查询字符串,python,python-requests,requests-mock,Python,Python Requests,Requests Mock,如何检查由requests\u mock模拟的请求是否向URL添加了一些查询参数 我有一个函数func,它在url上做一个HTTP POST,url上有一些查询字符串,我想检查是否用这个查询字符串调用了 这是我的尝试,但失败了 query是空字符串,qs是空dict 我确信我的func正在请求中追加查询字符串 with requests_mock.Mocker() as mock: mock.post(url, text=xml) func() # This function

如何检查由requests\u mock模拟的请求是否向URL添加了一些查询参数

我有一个函数
func
,它在url上做一个HTTP POST,url上有一些查询字符串,我想检查是否用这个查询字符串调用了

这是我的尝试,但失败了

query
是空字符串,
qs
是空dict

我确信我的func正在请求中追加查询字符串

with requests_mock.Mocker() as mock:
    mock.post(url, text=xml)

    func() # This function will call url + query string

    history = mock.request_history[0]

    assert history.method == "POST" # OK
    assert history.query is None # Returns an empty string, AssertionError: assert '' is None
    assert history.qs is None # Returns an empty dict, assert {} is None 
我的
func

def credilink():
    url = settings["url"]
    params = settings["params"]
    params["CC"] = query

    response = requests.post(url, params=params)
    # ...

我试图重现你的问题,但无法

以下是我正在运行的代码:

导入请求
导入请求\u mock
url=”http://example.com"
设置=dict(url=url,参数=dict(a=1))
query=“一些查询”
xml=“一些xml”
def credilink():
url=设置[“url”]
参数=设置[“参数”]
参数[“CC”]=查询
response=requests.post(url,params=params)
返回response.text
# ...
def test():
将请求\u mock.Mocker()作为mock:
mock.post(url,text=xml)
data=credilink()#此函数将调用url+查询字符串
历史记录=模拟。请求\u历史记录[0]
assert history.method==“POST”#确定
assert history.qs==dict(a=['1'],cc=[query])
assert history.query==f“a=1&cc={query}”
断言数据==xml
断言传递到此代码段中。
也许是版本问题?我使用了requests==2.25.1和requests mock==1.8.0。

您能提供一个更完整的示例吗?我很难理解你是如何使用它的。演示观察到的行为和有关预期行为的注释的单个文件脚本将是理想的。我使用的是相同版本的pip freeze | grep requests requests==2.25.1 requests mock==1.8.0,我编写的代码不适用于您:(不,我的
.qs
.query
仍然是空的。我正在使用Python 3.8.5。我的代码中可能还有其他内容……我会接受你的答案,因为我认为它是正确的。谢谢