设为首页 收藏本站
查看: 1371|回复: 0

[经验分享] python在rest接口测试中的应用

[复制链接]

尚未签到

发表于 2018-8-4 13:24:01 | 显示全部楼层 |阅读模式
import urllib,urllib2  import re,os
  import time
  class RestTest(object):
  def __init__(self):
  '''
  python的魔术方法,类似java的构造函数,该类在实例化的时候会调用这个函数
  '''
self.__ResPath__='/Users/niuhanyang/Desktop/TestRes/'#测试结果路径def Rest(self,method,url,restName,**param):  '''
  :param method: 请求方法,GET/POST,入参类型是str
  :param url: 请求url地址,入参类型是str
  :param restName: 接口名称,入参,类型是str
  :param param: 请求参数是一个可选参数,例如oper_id=11,会把传入的值都放到一个dict中,如{'oper_id':11}
  :return:如果是登录接口的话,会返回jessionid
  '''
  jsessionStr=r'"jsessionid":"(.*?)"'#正则表达式,抓出jsessionid
  new_jsessionStr = re.compile(jsessionStr)#编译正则
  if method=='GET':
  data = self.UrlParam(param)
  new_url=url+'?'+data#生成新的url
  result = urllib.urlopen(new_url).read()#保存返回结果
  print  restName+'\n'+result
  self.WriteRes(result,restName)#保存测试结果和返回报文
  return ''.join(new_jsessionStr.findall(result))
  if method=='POST':
  data = self.UrlParam(param)#参数转换
  req = urllib2.Request(url,data)#生成一个request对象
  response = urllib2.urlopen(req)#发送request请求
  result = response.read()#保存结果
  print  restName+'\n'+result
  self.WriteRes(result,restName)#保存测试结果和返回报文
  return ''.join(new_jsessionStr.findall(result))#把jsessionid转化成字符串返回,findall方法的返回值是一个list
  def UrlParam(self,param):
  '''
  参数转换,入参是一个dict,把这个list变为xx=xx这样
  示例:
  入参:{'oper_id':11}
  出参:oper_id=11
  '''
  return urllib.urlencode(param)
  def WriteRes(self,result,restName):
  '''
  :param result: 返回报文
  :param restName: 接口名,用来做报文结果的文件名
  :return: 无返回值
  '''
  res= result.find('success')#返回结果是否成功
  fw_flag = open('%sTestRes.txt'%self.__ResPath__,'a')#追加方式打开测试结果文件
  if res>0:
  fw_flag.write('%s : pass\n'%restName)#写入测试结果
  else:
  fw_flag.write('%s : fail\n'%restName)#写入测试结果
  fw_flag.close()
  fw_response = open('%s%s.txt'%(self.__ResPath__,restName),'w')#打开返回报文文件,前面一个%s是路径,后面的%s是以接口名命名的文件名
  fw_response.write(result)#写入返回报文
  fw_response.close()
  def BakRes(self):
  '''
  该函数的作用是用来备份测试结果
  '''
  now_time= time.strftime("%m-%d_%H:%M", time.localtime())
  os.system('cd %s&&mkdir %s&&mv *.txt ./%s'%(self.__ResPath__,now_time,now_time))
  def RmRes(self):
  '''
  清空测试目录下的所有测试结果
  '''
  os.system('cd %s&&rm -rf *'%self.__ResPath__)
  if __name__ == '__main__':
  Test = RestTest()#创建一个实例
  session_id = Test.Rest('POST','http://127.0.0.1:8080/nn_web/rest/oper/login','login',login_flag=0,oper_no='HEHH',oper_pwd=1)#调用Rest方法测试登录接口,获取session_id
  Test.Rest('POST','http://127.0.0.1:8080/nn_web/rest/oper/getOperInfo','getOperInfo',jsessionid=session_id)#调用获取工号信息接口,传入登录获取到的seession_id

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-546522-1-1.html 上篇帖子: Python生成html邮件 下篇帖子: python帮助
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表