【接口平台】too many values to unpack
有小伙伴反馈,在执行用例时,报错 too many values to unpack
确实服务端出现了异常报错
Traceback (most recent call last):
File "/Users/lluozh/work/git/SWAPI/util/httpTool/baseUtil.py", line 112, in POST
response = requests.post(self._content_.url, data=self._content_.request_body, headers=self._content_.header, params=self._content_.query_params, proxies=self._content_.proxies, verify=False, timeout=HTTP_FILE_REQUEST_TIME_OUT)
File "/Users/lluozh/work/git/SWAPI/venv/lib/python3.7/site-packages/requests/api.py", line 116, in post
return request('post', url, data=data, json=json, **kwargs)
File "/Users/lluozh/work/git/SWAPI/venv/lib/python3.7/site-packages/requests/api.py", line 60, in request
return session.request(method=method, url=url, **kwargs)
File "/Users/lluozh/work/git/SWAPI/venv/lib/python3.7/site-packages/requests/sessions.py", line 519, in request
prep = self.prepare_request(req)
File "/Users/lluozh/work/git/SWAPI/venv/lib/python3.7/site-packages/requests/sessions.py", line 462, in prepare_request
hooks=merge_hooks(request.hooks, self.hooks),
File "/Users/lluozh/work/git/SWAPI/venv/lib/python3.7/site-packages/requests/models.py", line 316, in prepare
self.prepare_body(data, files, json)
File "/Users/lluozh/work/git/SWAPI/venv/lib/python3.7/site-packages/requests/models.py", line 507, in prepare_body
body = self._encode_params(data)
File "/Users/lluozh/work/git/SWAPI/venv/lib/python3.7/site-packages/requests/models.py", line 97, in _encode_params
for k, vs in to_key_val_list(data):
ValueError: too many values to unpack (expected 2)
too many values to unpack,字面上意思为太多值无法解包?
有人提到
原因是字典这个是一个迭代器对象,参考官方文档找到下列说明,字典只支持Key的遍历,如果想对key,value,则可以使用items方法
但是并无相关
查看这个接口的方法为POST,请求的参数:
[
"llz-test-public-2/6e3a9bd76c754d5ebef69664b7cc0ba8.png"
]
响应值正确:
{
"code": 0,
"data": [],
"message": "Ok"
}
这个接口请求应该无任何需要解析的部分呀?
此时小伙伴又反馈说使用postman请求是没问题的,试试,发现可以正常响应
再check一下代码中对于POST的请求,直接使用json格式的请求ok,那问题出在哪里?
发现用户设置该接口的请求body类型是x-www-form-urlencoded
OMG!将类型修改成json,请求成功
这个问题出现的部分原因是因为平台需要设置请求body的类型,后续可以考虑和postman一致,直接避免此类型问题的出现