更完善的接口自动化脚本

  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中对应的结果

posted @ 2015-08-18 14:15  虫子宴  阅读(545)  评论(0编辑  收藏  举报