美文网首页
api批量测试从设想到实现

api批量测试从设想到实现

作者: 铁甲依然在人间 | 来源:发表于2020-06-10 17:55 被阅读0次

需求:

首先定位是一个小工具,配置好之后,case写在表格中,批量请求后,将结果批量输出到另一个表格,
tip:我们这里用之前写的接口做测试,详细参考以下链接,如果嫌麻烦我这里推在了云服务器上,有需要可以私聊我~

https://www.jianshu.com/p/296e05c635d2

🐷先看输出结果:


image.png

😘G列开始:预期结果,实际结果,是否通过,时间,响应时间

🐷看一下输入的表格:


image.png

😘G列是预期结果

分析:

  1. 通过配置文件把url拼接好
  2. 通过配置文件读取相应输入表格
  3. 输入表格一一对应请求
  4. 将结果等输出到另一个表格

开始:

我们先把配置文件给出来:
http_conf.ini

[HTTP]
host = 192.168.0.44
port = 5001

[MODEL]
server  = xxx/system


[FILE]
data_path= D:\\工作\\python_py\\XYZ\\XYZ\\test.xlsx

读取配置文件
configrunmodel

import configparser
import os

class ReadConfig():

    def get_server_path(self):
        config = configparser.ConfigParser ()
        config.read('http_conf.ini')
        host = (config['HTTP']['host'])
        port = (config['HTTP']['port'])
        sever_module=(config['MODEL']['server'])
        server_interfaces_dir = "http://" + host + ':' + port + '/' + sever_module + '/'
        return server_interfaces_dir

利用configparser库把一些参数配置管理起来

import xlrd
import sys
import configrunmodel
import xlwt
import datetime
import json
import requests

class ExcelData():
    def __init__(self,data_path,sheetname,url):
        self.data_path = data_path   #excle表路径,传入绝对路径
        self.sheetname = sheetname   #表格内sheet名
        self.data = xlrd.open_workbook (self.data_path)  #打开excl表格
        self.table = self.data.sheet_by_name (self.sheetname)  #切换到响应的sheet
        self.keys = self.table.row_values (0)     #第一行的数据为key值
        self.rowNum = self.table.nrows         #获取表格行数
        self.colNum = self.table.ncols         #获取表格列数
        self.url = url

    def readExcel(self):
        if self.rowNum<2:
            print("表格内小于两行数据")
        else:
            L = []    #列表L
            for i in range(1,self.rowNum):
                sheet_data = {}
                for j in range (self.colNum):
                    sheet_data[self.keys[j]]=self.table.row_values(i)[j]
                L.append (sheet_data)
                #print(sheet_data)
            return L

    def data_handing(self):
        data = ExcelData.readExcel(self)
        file = xlwt.Workbook()
        table = file.add_sheet(sheetname=self.sheetname)
        time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')#获取当前时间
        i = 0
        for data1 in data:
            value = data1["code"]  # 取出预期结果
            del data1["code"]
            url = self.url+self.sheetname
            r = requests.post(url=url, data=data1)
            m = r.json()['code']  # 取出返回的结果
            if m == value:  # 比对与之前取出的预期结果
                time_r = r.elapsed.total_seconds()
                data1.update(Expecte=value, Actual=m, res='pass', time=time, respose=time_r)  # 通过的结果字典中加入res=pass
                lst = list(data1)
                lst2 = list(data1.values())
                i = i + 1
                for index in range(len(lst2)):
                    table.write(i, index, lst2[index])
            else:
                time_r = r.elapsed.total_seconds()
                data1.update(Expecte=value, Actual=m, res='false', time=time, respose=time_r)  # 通过的结果字典中加入res=pass
                lst = list(data1)
                lst2 = list(data1.values())
                i = i + 1
                for index in range(len(lst)):
                    if i < 2:
                        table.write(0, index, lst[index])
                for index in range(len(lst2)):
                    table.write(i, index, lst2[index])
        file.save('res.xlsx')



if __name__ == '__main__':
    f = configrunmodel.ReadConfig()
    url = f.get_server_path() 获取配置文件的
    m=ExcelData('test_1.xlsx' ,'add_staff', url=url)#初始化ExcelData分别传入用例的文件,表名和请求的地址
    m = m.data_handing()

最后看一些结果:

这个是用例

image.png

这个是输出结果

image.png

tips

  1. readexcl方法我是参考这里,将用例表格中一行数据与首行数据组成key-value形式的字典再将所有数据组成列表。这里写的更详细详情见下链接
    https://www.bbsmax.com/A/x9J26AoZJ6/
  2. data_handing方法取出测试表格中的预期结果,比对请求的结果,然后将所有参数、请求时间、实际结果、预期结果、响应时间一个一个写到另一个表格中。
  3. 但是这种方法需要接口的格式不怎么变化,而且扩展性较差,接口测试最好还是使用pytest,不要重复造轮子。
  4. 实现多表读写。
  5. 把data_handing拆分,数据处理和读写表格分开,对方法体解耦
  6. 将记录写入数据库

相关文章

网友评论

      本文标题:api批量测试从设想到实现

      本文链接:https://www.haomeiwen.com/subject/oaxstktx.html