首页 > 其他分享 >基于requests框架实现接口自动化测试项目实战

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

时间:2022-08-15 09:34:00浏览次数:54  
标签:code 测试项目 headers resp 接口 响应 json print requests

每天进步一点点,关注我们哦,每天分享测试技术文章

本文章出自【码同学软件测试】

码同学公众号:自动化软件测试,领取资料可加:magetest

码同学抖音号:小码哥聊软件测试

requests库是一个常用的用于http请求的模块,它使用python语言编写,在当下python系列的接口自动化中应用广泛,本文将带领大家深入学习这个库

Python环境的安装就不在这里赘述了,我们直接开干。

 

01requests的安装

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请求的参数格式通常有多种,我们依次学习

 

第一种表单形式的参数

```python

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))```

 

第二种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":"[email protected]",

    "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接口实战

免费领取码同学软件测试课程笔记+超多学习资料+完整视频+面试题,可加微信:magetest

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请求

 

 

2.5request.session.request用法

可以自动管理cookie,比如如下需要采用cookie认证的接口

 

 

 

 

结果如下:

 

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关联的接口如何做呢?

 

 

对于需要token关联的接口来说,需要从登录接口的返回值中提取token信息,并传递给需要token的接口

 

 

结果如下:

 

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 

免费领取码同学软件测试课程笔记+超多学习资料+学习完整视频 ☞ 可加:magetest/关注码同学公众号:自动化软件测试

本文著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

标签:code,测试项目,headers,resp,接口,响应,json,print,requests
From: https://www.cnblogs.com/testfan2019/p/16587112.html

相关文章

  • 使用python的requests爬取原神观测枢的内容
    本文进行两个任务。 1.爬取米游社观测枢的圣遗物信息,存到本地json文件 2.爬取米游社观测枢的书籍信息及其超链接所链接的书籍内容,存到本地json文件使用技术:Python的req......
  • HCIA学习笔记十六:Access接口
    一、配置Access接口属性 • Access端口收报文:如果收到对端设备发送的帧是untagged(不带VLAN标签),交换机将强制加上该端口的PVID。如果收到对端设备发送的帧是tagged(带VL......
  • Node.js + Express + Knex 开发 API 接口
    安装依赖包npmiexpressknexmysql2这是Knex官方文档地址:Knex.js-SQLquerybuilder。搭建接口config.js新建一个config.js文件,专门写knex的配置:importk......
  • 自学java第10天之接口思想
    图:1.2.3.文字解释: ......
  • SpringBoot 过滤器和拦截器---实现全局接口日志输出
    SpringBoot过滤器和拦截器---实现全局接口日志输出首先,看一张图:Tomcat收到请求之后,会先通过过滤器Filter,该过滤器属于JavaHttp框架(过滤器采用接口回调的方式来运行......
  • Django-rest-framework开发api接口
    django-rest-framework开发api接口(1)创建django项目drfdemo1并且创建一个名为app的应用django-adminstartprojectdrfdemo1pythonmanage.pystartappapp(2)安......
  • 函数式接口:Function
    Function接口Function接口在java中主要用来转换类型通过调用apply方法将T类型转换为R类型抽象方法:applyRapply(Tvar1);代码样例publicclassMain{publics......
  • 每五秒获取调取告警接口
     //告警数量 constgetAlarm=()=>{  getAlarmCount().then(   (res:any)=>{    if(res.code==200){     setCount(res......
  • django restframework 后端接口权限
    REST_FRAMEWORK={'EXCEPTION_HANDLER':'djangoProject.utils.exception.custom_exception_handler',#在不需要权限就能访问的视图设置permissions_classes......
  • 函数式接口:Predicate
    Predicate接口Predicate在英文中的意思:断言。也就是对事物下判断。抽象方法:test//对指定类型的数据var1使用自定义的方式判定booleantest(Tvar1);其实Predicate就......