🔥 交流讨论:欢迎加入我们一起学习!
🔥 资源分享:耗时200+小时精选的「软件测试」资料包
🔥 教程推荐:火遍全网的《软件测试》教程
📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
requests库是一个常用的用于http请求的模块,它使用python语言编写,在当下python系列的接口自动化中应用广泛,本文将带领大家深入学习这个库
Python环境的安装就不在这里赘述了,我们直接开干。
01 requests的安装
windows下执行如下命令
pipinstallrequests-ihttp://pypi.douban.com/simple/–trust-host pypi.douban.com
mac终端下执行如下命令
python3-mpipinstallrequests-ihttp://pypi.douban.com/simple/–trust-host pypi.douban.com
02 自动化requests模块的常用方法
2.1get请求实战
!/usr/bin python3 # encoding: utf-8 -*- # @author: 沙陌 微信:Matongxue_2 # @Time:2021/3/25 9:54 # @Copyright:北京码同学网络科技有限公司
import requests
host=‘http://10.0.0.18:8080’
def get():
“”"
get接口请求
:return:
“”"
url =host+’/pinter/com/getSku’ #接口地址
params={
'id':1
- 1
}
resp = requests.get(url,params=params)
status_code=resp.status_code #获取响应状态码
print(‘响应状态码:{}’.format(status_code))
text=resp.text #获取响应内容,结果类型是字符串
print(‘响应内容:{}’.format(text))
json=resp.json() #获取响应内容,结果是字典类型
print(‘响应内容:{}’.format(json))
resp_headers=resp.headers #获取响应headers
print(‘响应header:{}’.format(resp_headers))
if__name__==‘main’:
get()
结果如下
D:\Python\Python36\python.exe D:/pycharmprojects/first/requetsstudy/pinter.py
响应状态码:200
响应内容:{“code”:“0”,“message”:“success”,“data”:{“skuId”:1,“skuName”:“ptest-1”,“price”:“645”,“stock”:709,“brand”:“testfan”}}
<class’dict’>
响应内容:{‘code’:‘0’,‘message’:‘success’,‘data’:{‘skuId’:1,‘skuName’:‘ptest-1’,‘price’:‘645’,‘stock’:709,‘brand’:‘testfan’}}
响应header:{‘Content-Type’:‘application/json;charset=UTF-8’,‘Transfer-Encoding’:‘chunked’,‘Date’:‘Fri,12Mar202122:13:49GMT’,‘Keep-Alive’:
‘timeout=20’,‘Connection’:‘keep-alive’}
Process finished with exit code 0
上述代码中请求发起后得到一个响应对象变量resp,那么resp对象的常用方法如下
2.2post请求实战
post请求的参数格式通常有多种,我们依次学习
第一种表单形式的参数
importrequests
host='http://10.0.0.18:8080'
defpost():"""post表单:return:"""url=host+'/pinter/com/login'#表单参数data={
'userName':'沙陌','password':'123456'}resp=requests.post(url=url,data=data)status_code=
resp.status_code#获取响应状态码print('响应状态码:{}'.format(status_code))text=resp.text#获取响应内容,结果类型是字符串print('响应内容:{}'.format(text))json=resp.json()#获取响应内容,结果是字典类型print('响应内容:{}'.format(json))resp_headers=resp.headers#获取响应headers
print('响应header:{}'.format(resp_headers))```
免费领取 码同学软件测试 课程笔记+超多学习资料+完整视频+最新面试题,可以转发文章 + 私信「码同学666」获取资料哦
第二种json格式参数
import requests
host='http://10.0.0.18:8080'
def post_json():
"""
postjson
:return:
"""
url =host +'/pinter/com/register'
#header里定义参数类型
headers={
'Content-Type':'application/json'
}
#json参数
json={
"userName":"沙陌",
"password":"1234",
"gender":1,
"phoneNum":"110",
"email":"beihe@163.com",
"address":"Beijing"
}
resp=requests.post(url=url,json=json)
status_code=resp.status_code #获取响应状态码
print('响应状态码:{}'.format(status_code))
text=resp.text #获取响应内容,结果类型是字符串
print('响应内容:{}'.format(text))
json=resp.json() #获取响应内容,结果是字典类型
print('响应内容:{}'.format(json))
resp_headers=resp.headers #获取响应headers
print('响应header:{}'.format(resp_headers))
2.3put接口实战
import requests
host='http://10.0.0.18:8080'
def put():
"""
put 清酒
:return:
"""
url = host+'/pinter/com/phone' #接口地址
#参数
json={
"brand":"Huawei",
"color":"yellow",
"memorySize":"64G",
"cpuCore":"8核",
"price":"8848",
"desc":"全新上市"
}
resp=requests.put(url=url,json=json)
status_code=resp.status_code #获取响应状态码
print('响应状态码:{}'.format(status_code))
text=resp.text #获取响应内容,结果类型是字符串
print('响应内容:{}'.format(text))
json=resp.json() #获取响应内容,结果是字典类型
print('响应内容:{}'.format(json))
resp_headers=resp.headers #获取响应headers
print('响应header:{}'.format(resp_headers))
2.4delete请求
![在这里插入图片描述](https://img-blog.csdnimg.cn/273f6203fbae4f1d81145443aaff1c80.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAVGVzdGZhbl96aG91,size_20,color_FFFFFF,t_70,g_se,x_16)
2.5request.session.request用法
可以自动管理cookie,比如如下需要采用cookie认证的接口
![在这里插入图片描述](https://img-blog.csdnimg.cn/0935e09a91944a0e9db1129522ad17f9.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAVGVzdGZhbl96aG91,size_20,color_FFFFFF,t_70,g_se,x_16)
![在这里插入图片描述](https://img-blog.csdnimg.cn/463c3e56d91c43f89f6281931ffec9e5.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAVGVzdGZhbl96aG91,size_20,color_FFFFFF,t_70,g_se,x_16)
结果如下:
D:\Python\Python36\python.exeD:/pycharmprojects/first/requetsstudy/pinter.py 响应状态码:200
响应内容:{"code":"0","message":"success","data":"$22,378,198"}
Process finished with exit code 0
2.6token关联的接口如何做呢?
![在这里插入图片描述](https://img-blog.csdnimg.cn/b0c3610841a74860804d33f7281cb0c3.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAVGVzdGZhbl96aG91,size_20,color_FFFFFF,t_70,g_se,x_16)
对于需要token关联的接口来说,需要从登录接口的返回值中提取token信息,并传递给需要token的接口
![在这里插入图片描述](https://img-blog.csdnimg.cn/a5328e813bcd48d9bd264dea480fedfe.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAVGVzdGZhbl96aG91,size_20,color_FFFFFF,t_70,g_se,x_16)
结果如下:
D:\Python\Python36\python.exeD:/pycharmprojects/first/requetsstudy/pinter1.py
响应状态码:200
响应内容:{"code":"0","message":"success","data":"$74,780,457"}
Process finished with exit code 0
总结一下:
requests库的请求方法里参数众多,所以简单划分一下,查询参数就用params=params
表单参数就用data=data
json参数就用json=json
请求头信息header就用headers=headers
最后我邀请你进入我们的【软件测试学习交流群:785128166】, 大家可以一起探讨交流软件测试,共同学习软件测试技术、面试等软件测试方方面面,还会有免费直播课,收获更多测试技巧,我们一起进阶Python自动化测试/测试开发,走向高薪之路
作为一个软件测试的过来人,我想尽自己最大的努力,帮助每一个伙伴都能顺利找到工作。所以我整理了下面这份资源,现在免费分享给大家,有需要的小伙伴可以关注【公众号:程序员二黑】自提!