1、问题描述
以前写的接口自动化脚本,用到新的项目中报错
2、ValueError: too many values to unpack (expected 2)
什么意思?
有太多的值无法解压缩---大白话“左边接收的变量和右面生成的值的个数对不上”。
例子
假设你有一个元组,其中包含三个元素,但你尝试使用两个变量来解包它:
data = (1, 2, 3)
a, b = data
formdata =[{"operationName":"reportList","variables":{"projectIds":[1],"limit":10,"offset":0},"query":"fragment RequiredDataForDownloadReport on ReportType {\n id\n fileTypeList\n allSupportTypeList\n __typename\n}\n\nquery reportList($projectIds: [Int!]!, $limit: Int, $offset: Int, $name: [FuzzyInputType!], $template: [ReportTemplateEnum!], $createdTime: [TimeIntervalInputType!]) {\n reportList(projectIds: $projectIds, limit: $limit, offset: $offset, name: $name, template: $template, createdTime: $createdTime) {\n count\n result {\n id\n ...RequiredDataForDownloadReport\n name\n template\n createdTime\n status\n project {\n id\n fullName\n __typename\n }\n __typename\n }\n __typename\n }\n}\n"}]
print(type(formdata))#<class 'list'>
response = requests.post(url=url,data=formdata,headers=headers)
那么最可能的原因是 url, formdata, 或 headers 变量中的一个或多个包含了多于预期的值。
例如,如果 formdata 或 headers 不是一个字典(这是 requests.post 方法所期望的),而是其他类型的序列(如列表或元组),那么就会出现这个错误。
所以用json.dumps 将list转成json串即可。
response = requests.post(url=url,data=json.dumps(formdata),headers=headers)