问题遇到的现象和发生背景
最近写接口自动化遇到两次TypeError: 'Food' object is not iterable报错,把自己得理解分享出来,供大家参考,有不足之处欢迎大家补充。
问题相关代码,请勿粘贴截图
相关代码:
class baseAPI:
def query(self,indata):
resp = self.request_send(self,params=indata)
return resp
报错部分:
from baseAPI import baseAPI
class Food(baseAPI):
def listfood(self,foodInData):
resp = super(Food,self).query(foodInData)
return resp
if name=="main":
from practise.utils.handle_path import projectPath
from practise.libs.Login import Login
filepath = rf"{projectPath}/data/123.jpeg"
data = {'username': "th0469", 'password': '123456'}
cook=Login().login(data)['data']["token"]
foodindata={"page":1,"limit":1}
fd=Food(cook)
resp=fd.listfood(foodindata)
print(resp)
运行结果及报错内容
Traceback (most recent call last):
File "L:\gitlab_local_liurencheng\shopping\practise\libs\Food.py", line 21, in
resp=fd.listfood(foodindata)
File "L:\gitlab_local_liurencheng\shopping\practise\libs\Food.py", line 11, in listfood
resp = super(Food,self).query(foodInData)
File "L:\gitlab_local_liurencheng\shopping\practise\common\baseAPI.py", line 64, in query
resp = self.request_send(self,params=indata)
File "L:\gitlab_local_liurencheng\shopping\practise\common\baseAPI.py", line 34, in request_send
resp = requests.request(method=method, url=url, data=data,headers=self.header,params=params,files=file)
File "Z:\pythonProject\venv\Lib\site-packages\requests\api.py", line 61, in request
return session.request(method=method, url=url, **kwargs)
File "Z:\pythonProject\venv\Lib\site-packages\requests\sessions.py", line 542, in request
resp = self.send(prep, **send_kwargs)
File "Z:\pythonProject\venv\Lib\site-packages\requests\sessions.py", line 655, in send
r = adapter.send(request, **kwargs)
File "Z:\pythonProject\venv\Lib\site-packages\requests\adapters.py", line 469, in send
for i in request.body:
TypeError: 'Food' object is not iterable
我的解答思路和尝试过的方法
问题是self.request_send(self,params=indata)出错。
方法一:去掉self;
方法二:indata要传给params,否则报错,比如写成data=indata
我想要达到的结果
这个问题去掉self就可以