环境介绍
操作系统:win7
语言:python2.7
编写目的
公司有一个新系统要上线,前期开发提供了接口文档和一个接口验证的工具,但这个工具只能验证一个接口,请求的参数也需要请求一次写一次,返回的结果也没有进行保存,正好, 当时在学习 python,就想到自己写一个脚本进行测试
使用到的包
import xlrd —— 用来获取 EXCEL 数据,生成请求的 json 串
import requests —— 接口请求用的,很好用
import os,time —— 用来把接口返回的数据存储到本地 txt 文件中
编写思路
接口请求的参数我想的是直接从 excel 文件里读取,由于公司接口请求的值都是 json 串,于是我就在 excel 里直接定义参数名、参数值。当然,我还想一个文件里对参数进行多次的定义,为了区分值的结束,就加了一个 end 进行判断。另外,测试时要对多个接口进行请求,我就决定,每个 EXCEL 只针对一个接口,要批量执行时,直接获取用例文件夹下的 EXCEL 就可以了,返回的结果也是 json 串,由于太长了,直接我就存到 txt 文件里,
具体代码

#coding=utf-8
import xlrd
import requests
import os,time



def apidata(xls):
    data = xlrd.open_workbook(xls)
    table = data.sheets()[0]
    nrows = table.nrows #获取行数
    url= table.cell(1,2).value  #获取URL
    req= table.cell(3,2).value  #获取接口方式
    data=[]
    data1={}
    for i in range(nrows ): #循环获取行值
        try:
            apiname=table.cell(i+1,0).value   #获取参数名
            apiname1=apiname.encode("utf-8")
            if apiname1 == "end" or apiname1 == "" :

                print "读取到end,进行参数调整"
                data.append(data1)
                data1={}
                continue
            apidata=table.cell(i+1,1).value  #获取参数的值
            apidata1=apidata.encode("utf-8")
            data1[apiname1]=apidata1
        except Exception:
            pass
    print "获取接口参数成功"
    return data,url,req  #返回参数以及URL

def getfile(name):   #获取目录下的所有excel文件名
    test=os.listdir(name)   #设置文件目录
    test.sort()     #对目录下文件进行排序
    filename=[]   #定义存excel文件的列表名
    for i in test:   #对目录下的文件进行循环
        x= i.split(".").pop()   #获取文件的扩展名
        if x =="xlsx" or x =="xls":   #判断扩展名
            filename.append(i)    #把当前文件添加到列表中
    return filename

def log(r1,t1):   #保存值到本地
    x=time.strftime("%Y-%m-%d", time.localtime())
    x1=t1+x+".txt"
    fo = open(x1,"a")
    fo.write(r1);


def requtest(api,url,ruq):
    if  ruq =='post':
        r = requests.post(url, api)
    elif ruq == "get":
        r = requests.get(url, api)
    else:
        print "没有设置协议类型,请设置"

    return r

def test():
    dir1 = 'excel存放的目录'
    xls=getfile(dir1)
    for i in xls:

        i= i.decode("gbk")

        print i,"准备执行"
        #try:
        api,url,ruq = apidata(dir1+i,deskey)

        url1=http+url  #生成完成接口地址
        print "请求地址为:"+str(url1)
        num=0

        for j in (api ):
            num = num + 1
            y= mtest.getpar(url, j, key)  #生成Parameters
            x=requtest(y,url1,ruq)
            z= i.split(".")[0]
            runtest(num,x,z,y)
            #jc(x,y,i,url)
        print i,"接口用例执行完成,准备执行下一个用例"

    print "目录下所有用例执行完成,执行结果信息请查看日志文件"

for i in range(2):
    num = 'thread'+str(i)
    num = test()

excel 文件格式如下


↙↙↙阅读原文可查看相关链接,并与作者交流