最近工作之余一直在想怎么能够提高工作效率,特别是接口测试至一块,后来想到了接口自动化,在长期的测试过程中会经常做接口测试,可是那只是单一的一个接口,那么我们怎么去做批量的接口测试呢?自己设想如下:
1、在一个工作目录下准备几个文件,分别为主程序运行文件,接口地址文本文件,请求参数文本文件,请求参数的值的文本文件
2、主要思维:通过运行主程序,去获取接口地址下的文本文件,再将该地址对应的请求参数和请求参数值对应起来,然后拼接上
3、再通过urllib发送请求到服务器,根据返回的状态码以及返回值来判断接口是否成功
下面是写的一个简化版的脚本程序:
#__author__ = 'ytxu' #coding=utf-8 import urllib,urllib2,os,sys,json class InterfaceAutoTestMain: #读取接口 def InterfaceData(self): file = 'InterfaceData.txt' interfaceDataData = ''.join(self.ReadFile(file)) return interfaceDataData #读取变量 def Variety(self): postVariety = [] varietyData = 'VarietyDataFile.txt' Data = self.ReadFile(varietyData) for LinData in Data: #postData[LinData] lin = LinData.replace(' ','') postVariety.append(lin) return postVariety #读取参数数据 def Parameter(self): postParameter = [] parameterData = 'ParameterDataFile.txt' Data = self.ReadFile(parameterData) for LinData in Data: #检查请求数据中是否包含多元数组 lin = LinData.replace(' ','') postParameter.append(lin) return postParameter #读取文件 def ReadFile(self,FileName): f = open(FileName) Data = f.readlines() return Data #拼接变量和数据 def PostData(self): #将两个列表合并为一个字典 Data =dict(zip(self.Variety(),self.Parameter())) return Data #接口、数据拼接 def SouData(self): jdata = urllib.urlencode(self.PostData()).replace('+','').replace("%27","%22") req = urllib2.Request(self.InterfaceData(),jdata) response = urllib2.urlopen(req) responseStr = response.read() code = response.getcode() if(code ==200): ResJson = json.loads(responseStr) if(ResJson["ret"]!=0): print "error" #print eval(code) #脚本运行 run = InterfaceAutoTestMain() run.SouData()