api批量测试从设想到实现

需求:

首先定位是一个小工具,配置好之后,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. 将记录写入数据库
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,539评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,911评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,337评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,723评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,795评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,762评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,742评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,508评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,954评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,247评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,404评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,104评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,736评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,352评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,557评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,371评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,292评论 2 352