python+requests如何实现接口自动化
admin
2023-07-03 02:03:17
0

  利用python和第三方库requests进行接口自动化测试(python+requests)

  第三方库requests简单介绍

  Requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库。它比 urllib 更加方便,可以节约我们大量的工作,完全满足 HTTP 测试需求。更重要的一点是它支持 Python3 。

  大概步骤

  Request是第三方库,需要手动安装:CMD安装即可----命令:pip install requests

  在pycharm先导入requests第三方库,代码—import requests

  发送请求—http.get请求:requests.get(‘https://api.github.com/events’)

  发送请求—http.post请求:requests.post(‘http://httpbin.org/post’, data = {‘key’:‘value’})

  构建URL参数等

  结合Python进行返回参数进行验证

  运行即可(请求失败可抓包查看发送参数是否有误)

  详细介绍

  以下主要介绍两种常用http请求:get和post,以及delete

  下图为本次编写代码测试的用例

  具体代码:

  第一步:安装完后直接导入requests使用

  #导入requests

  import requests

  第二步:利用Python+requests编写代码构建请求

  #登录接口--post请求

  这里需要注意,除了返回接口内容,还需要返回cookies,因为后面的操作需要用到登录身份标识

  def Login(user,passw):

  payload = {

  'username': test,

  'password': 123456

  }

  # data参数 就是构造消息体的

  response = requests.post("http://localhost/XXXX",

  data=payload)

  # 获取结果,返回给调用者

  retDict = response.json()

  # 在控制台打印出结果

  print(retDict)

  #返回结果,调用时需要用到

  return retDict, response.cookies

  #添加课程接口--post请求

  这里需要注意,请求参数需要加上cookies,因为后面的操作需要用到登录身份标识

  def add_course(action,name,desc,dis,sessionid):

  re={'action':action,

  'data':'''

  {

  "name": "%s",

  "desc": "%s",

  "display_idx": "%s"

  }

  '''% (name,desc,dis)

  }

  rs=requests.post("http://localhost/XXXX",data=re,cookies={'sessionid': sessionid})

  re=rs.json()

  print(re)

  return re

  #列出课程接口--get请求

  def list_course(sessionid):

  parm={

  'action' :'list_course',

  'pagenum':1,

  'pagesize':20

  }

  # he = {"Content-Type": "application/json"}

  rs=requests.get("http://localhost/XXXX",params=parm,cookies={'sessionid': sessionid})

  liechu=rs.json()

  print(liechu)

  return liechu

  #删除课程接口--delete请求

  def delete_course(courseid,sessionid):

  payload = {

  'action': 'delete_course',

  'id': f'{courseid}'

  }

  response = requests.delete("http://localhost/XXXX/",

  data=payload,

  cookies={'sessionid': sessionid})

  r = response.json()

  pprint.pprint(r)

  return r无锡妇科医院 http://www.bhnfk.com

  第三步:利用Python对requests返回的参数进行验证

  #因为这块代码是新建了另一个Python文件编写。所以这里需要先导入上面的Python文件才可以调用里面的函数

  from jiakouzudonghua import aba

  #导入随机数函数

  import random

  # 利用写好的登录接口进行登录

  # loginRet保存登录接口返回是否登录成功的参数,cookies保存登录成功返回的cookie

  loginRet,cookies = aba.Login('auto','sdfsdfsdf')

  #使用if判断是否登录成功,可直接使用assert验证

  if loginRet["retcode"] == 0:

  print('登录成功')

  else:

  print('登录失败')

  # 记录下sessionid

  sessionid =cookies['sessionid']

  #这里课程使用了随机数,最大程度确保每次运行不会创建到同名课程

  classname=('课程'+str(random.randint(0,99999999999)))

  # 第一次先列出课程,为后面比较做准备

  coureListBefore = list_course(sessionid)['retlist']

  # 添加一门课程,且使用assert进行验证,对则不会反悔信息,错则返回错误信息

  retDict = add_course('classname','php语言','2',sessionid)

  assert retDict['retcode'] == 0

  #也可用if进行验证

  # if retDict['retcode'] == 0:

  # print('添加课程成功')

  # else:

  # raise Exception('添加课程失败')

  # 第二次再列出课程

  coureListAfter = list_course(sessionid)['retlist']

  #使用len计算添加课程前和添加课程后的课程数量,然后相减等于1则证明成功,也可直接取返回的课程数量total进行验证

  createCount = len(coureListAfter) - len(coureListBefore)

  assert createCount == 1

  # 取出,多出来的一门课程对象

  newcourse = None

  for one in coureListAfter:

  if one not in coureListBefore:

  newcourse = one

  break

  # 检查是否是刚刚添加的课程

  assert newcourse!=None

  assert newcourse['name']=='classname'

  assert newcourse['desc']=='php语言'

  assert newcourse['display_idx']==2

  # 清除环境操作,删除刚刚添加的课程

  delete_course(newcourse['id'],sessionid)

  print('\n========= test case pass =============')

  得出控制台运行结果。

相关内容

热门资讯

视频丨首次突破、刷新纪录!本周... 本周我国在航天、基建、工程等领域迎来突破从地下到太空从大国重器到汽车工业中国硬核实力接连刷新历史神舟...
上海“僵尸房”复活记:卖不掉的... 在房地产从业者的行话里,有一个并不正式却颇为形象的词——“僵尸房”。没有人能给出它的准确定义,更没人...
网红“悍马糖”被查 近日,据江苏南京《金陵警事》报道:看似普通糖果,号称“增强精力”,实则暗藏致命风险。南京秦淮警方成功...
灶具打不着火原因 1、如果灶具进入了过压保护的时候,灶具是不会打火启动的,所以这样就会导致灶具打不着火的问题发生。2、...
灶一边打不着火 1、可能是由于一边的打火针上面比较脏,出现点火针跑偏的现象。2、也有可能是由于打火的时候,打不着火的...
苏泊尔电饭锅一会儿通电一会儿不... 由于电饭煲的待机电路出现了问题,待机电路需要一个小信号的信号电路,也就是把220伏转成五伏电压,这个...
红日燃气灶怎么样-红日燃气灶好... 最佳回答 红日燃气灶的质量很不错呀。红日燃气灶还是一个比较受欢迎的燃气灶品牌的,这个品牌的燃气灶,性...
油烟机报警器一直响怎么办 当油烟机报警器一直响时,我们需要立即采取应对措施以确保安全。以下是一些应对措施:1.关闭油烟机:当油...
路面突然塌陷,目击者:两人连人... 近日,四川广安岳池县城,有市民骑车经过一处井盖旁的道路时突遇路面塌陷。现场目击者告诉红星新闻,车上两...
中国人民大学发布“观天 短临降... 中新社北京5月30日电 (记者 曾玥)中国人民大学高瓴人工智能学院30日在北京发布“观天 短临降水智...