基于requests框架实现接口自动化测试项目实战

235 篇文章 0 订阅
235 篇文章 11 订阅

每天进步一点点,关注我们哦,每天分享测试技术文章
本文章出自【码同学软件测试】
码同学公众号:自动化软件测试
码同学抖音号:小码哥聊软件测试

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

}

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 


笔者跟大家分享一个福利!扫码回复【csdn码哥群】入软件测试自学交流群,可免费听技术讲座+领学习资料+视频课免费看
![在这里插入图片描述](https://img-blog.csdnimg.cn/a29037ebae324532bcfe606da5420e65.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAVGVzdGZhbl96aG91,size_20,color_FFFFFF,t_70,g_se,x_16)

作者:码同学软件测试
本文著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值