更完善的接口自动化脚本

  1 #encoding:utf-8
  2 
  3 import httplib2,xlrd,xlwt,json,time,requests
  4 from xlutils.copy import copy
  5 
  6 #创建测试类
  7 class Test(object):
  8     def __init__(self,url):
  9         #self.uri = uri
 10         self.url = url
 11         
 12 
 13     
 14     
 15     #获取url内容
 16     def GetHttp(self):
 17         try:
 18             conn= httplib2.Http()
 19             #Start =time.time()
 20             req =conn.request(self.url)
 21             #End = time.time()
 22             self.status= req[0].status
 23             self.value =req[1]
 24             #self.diff = End - Start
 25             return self.status,self.value
 26         except:
 27             return(0,0)
 28 
 29     #获取URL请求时间
 30     def RequestTime(self):
 31         try:
 32             r = requests.get(self.url)
 33             ResponseTime=float(r.elapsed.microseconds)/1000
 34             return ResponseTime
 35         except:
 36             return "false"
 37             
 38     #获取json内容,抓取必要字段,address,name
 39     def JsonDetail(self,value):
 40         try:
 41             value_dic= json.loads(value)
 42             _Items = value_dic["ats"]["poi_list"]
 43             _message = value_dic["ats"]["message"].strip()
 44             poi_list =[]
 45             if _message == "Successful.":
 46                 for item in _Items:
 47                     name= item["name"].strip()
 48                     address = item["address"].strip()
 49                     poi_list.append("name:"+name+",address:"+address)
 50                 poi_list=";" .join(poi_list)
 51                 return _message
 52             else:
 53                 return _message
 54         except:
 55             return u"不是json格式"
 56 
 57 def Time():
 58         tim = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
 59         return tim
 60             
 61 def teston():
 62     oldex = xlrd.open_workbook(r"url.xls")
 63     oldsh = oldex.sheet_by_index(0)
 64     nrows = oldsh.nrows
 65     newex = copy(oldex)
 66     newsh = newex.get_sheet(0)
 67     
 68     print "Begin time:" +Time()
 69     newsh.write(1,12,Time())
 70     for i in xrange(1,nrows):
 71         #预期结果
 72         ex_result = oldsh.cell(i,0).value
 73         print ex_result
 74        # print "#%d" %i,u"83测试url"+oldsh.cell(i,1).value.strip()
 75         print "#%d" %i,u"test url"+oldsh.cell(i,2).value.strip()
 76         #实例化83 接口与 test接口
 77         #Url83 = Test(oldsh.cell(i,1).value.strip())
 78         TestUrl = Test(oldsh.cell(i,2).value.strip())
 79         #获取response和value
 80         #Get83Sta,Get83Val = Url83.GetHttp()
 81         GetTestSta,GetTestVal = TestUrl.GetHttp()
 82         #获取url请求时间
 83         #Get83Tim = Url83.RequestTime()
 84         GetTestTim = TestUrl.RequestTime()
 85         #获取选定内容
 86         #Get83Item = Url83.JsonDetail(Get83Val)
 87         GetTestItem = TestUrl.JsonDetail(GetTestVal)
 88         #if Get83Item != "Successful.":
 89          #   newsh.write(i,14,Get83Item)
 90         if GetTestItem != "Successful.":
 91             newsh.write(i,15,GetTestItem)
 92         #记录response
 93         #newsh.write(i,3,Get83Sta)
 94         newsh.write(i,4,GetTestSta)
 95         #判断83url请求状态是否为200,是写入request time和 details
 96         '''
 97         if Get83Sta == 200:
 98             newsh.write(i,5,Get83Tim)
 99             newsh.write(i,7,Get83Item)
100             #判断83与测试服务器返回是否一致
101             if Get83Item == GetTestItem:
102                 newsh.write(i,9,"Same")
103             else:
104                 newsh.write(i,9,"Unlike")
105             #判断预期结果
106             if ex_result in Get83Item:
107                 newsh.write(i,10,"PASS")
108             else:
109                 newsh.write(i,10,"Fail")
110         else:
111             newsh.write(i,3,Get83Sta)
112             newsh.write(i,10,u"83网页错误")
113         '''
114         #判断testurl请求状态是否为200,是写入request time和 details
115         if GetTestSta == 200:
116             newsh.write(i,6,GetTestTim)
117             newsh.write(i,8,GetTestItem)
118             #判断预期结果
119             if ex_result in GetTestItem:
120                 newsh.write(i,11,"PASS")
121             else:
122                 newsh.write(i,11,"Fail")
123         else:
124             newsh.write(i,3,GetTestSta)
125             newsh.write(i,11,u"121网页错误")
126             
127     print "End time:" +Time()
128     newsh.write(1,13,Time())
129     newex.save(r'url.xls')
130     
131 if __name__ == "__main__":
132     teston()

这是其中一种羡慕的实践代码,分别对比两个api 返回结果,查看返回时间,以及response code。原理比之前类似,但代码更清楚规范

以下是excel中对应的结果

转载于:https://www.cnblogs.com/BUGU/p/4739272.html

JMeter是一款功能强大的性能测试工具,也可以用于接口测试。在使用JMeter进行接口自动化脚本的设计时,可以按照以下步骤进行: 1. 搭建框架:首先,需要搭建一个JMeter的测试计划,包括线程组、HTTP请求等元件。这个测试计划将作为接口自动化脚本的基础。 2. 设计增删查改线程组:根据接口的需求,设计相应的增删查改操作的线程组。每个线程组代表一个并发用户,可以设置不同的参数和请求方式。 3. 添加正则表达式提取器:在接口请求中,可能需要提取返回结果中的某些数据,可以使用JMeter的正则表达式提取器实现。通过提取器可以将需要的数据保存到变量中,方便后续的操作和验证。 4. 设置全局变量:如果需要在多个接口之间共享数据,可以设置全局变量。全局变量可以在整个测试计划中使用,方便传递数据和参数。 5. 使用全局变量:在接口请求中,可以使用设置的全局变量,比如作为参数传递给接口,或者作为验证结果的依据。 6. 运行:完成脚本设计后,可以执行JMeter脚本,模拟多个并发用户发送接口请求,并对接口的性能和功能进行测试。 以上是使用JMeter进行接口自动化脚本设计的一般步骤。在具体的实施过程中,还需要根据接口的具体要求和场景进行调整和优化。引用中提到的自动化接口脚本设计的思路,可以参考并确保之前的代码没有受到影响。而引用提到的函数式M文件和脚本式M文件的区别,一般不直接适用于JMeter的接口自动化脚本设计中。 综上所述,进行接口自动化脚本设计时,可以使用JMeter工具,按照搭建框架、设计增删查改线程组、添加正则表达式提取器、设置全局变量、使用全局变量和运行的流程进行操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值