• 毫秒级上传批量附件


    本文讲述:测试过程中,通过自动化脚本实现毫秒上传批量附件。

    注意:本文需要你有如下技能

    • 测试基础知识
    • python编程知识
    • 数据库知识
    • 自动化框架思想

    笔者在测试过程中,统计到被测系统的各表单页面有共有39张附件(图片)需要上传;步骤是这样的:

    • 1、表单页面,点击“上传”按钮,在页面弹窗中选择本地准备好的附件(图片),在熟练操作的情况下这里大约消耗了2秒;
    • 2、39张*2秒/张=72秒
    • 3、测试过程中,每天需要构造的测试数据,大约是30条
    • 4、把2和3相乘就是72秒/条*30条=2160秒,折合约36分钟,也就是仅仅上传附件就消耗了我36分钟;

    那么,问题来了“我很生气…”

    笔者尝试用自动化来上传附件,结果真的大吃一惊;

    “本次总共上传了39张附件,共计耗时0.12213140000000003秒”,看到pycharm控制台打印的消息,笔者是非常开心。

    [2088-08-8 8:8:8] - INFO: 连接数据库总耗时0.002419699999999997秒
    ......
    [2088-08-8 8:8:9] - INFO: 本次总共上传了39张附件,共计耗时0.12213140000000003秒。
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    这么一算的话,39张*0.122秒/张=4.758秒;
    由此看来,自动化速度大约是人工的454倍;

    那么,笔者是怎么实现的呢?
    不要急,站稳扶好,下面来撸码!
    mysqlc.py

    # -*- coding: utf-8 -*-
    import pymysql.cursors
    from common.myLog import *
    from config.readConfig import *
    import time
    class mysql_do():
        def __init__(self,db):
            self.log = MyLog()
    		self.connect = pymysql.Connect(
                # 读取测试环境的数据库连接信息
                host=self.dbinfo["host"],
                port=int(self.dbinfo["port"]),
                user=self.dbinfo["user"],
                passwd=self.dbinfo["passwd"],
                db= db,
                charset='utf8'
            )
            self.cursor = self.connect.cursor()
            time4 = time.perf_counter()
            self.log.info(message="连接数据库总耗时%s秒" % (time4 - time3))
    
        def sqlselect3(self):
            sqlselect1 = 'SELECT id from 表名1 ORDER BY id DESC LIMIT 1'
            sqlselect2 = 'SELECT id from 表名2  ORDER BY id DESC LIMIT 1'
            exe1= self.cursor.execute(sqlselect1)
            res = self.cursor.fetchall()
            exe2= self.cursor.execute(sqlselect2)
            res1 = self.cursor.fetchall()
            a_id = res[0][0]
            ab_id = res1[0][0]
            return a_id ,ab_id 
    
         def sqlselect3_insert(self,**kwargs):
            time3 = time.perf_counter()
            a= kwargs["a"]
            sql = mysql_do(db = '表名').sqlselect3()
           
            b_id = [1,2,3,.....,39]
            k = 0
            for k in range (0,len(b_id )):
                att_sql = b_id [k]
                att_id = sql[0] + k +1
                attachment_rel_id = sql[1] + k +1
                i1 = "INSERT INTO `库名`.`表名1`(`id`, `name`, `url`, `alias`, `remark`, `tmp`, `created_by`, `created_date`, `deleted`, `last_modified_by`, `last_modified_date`) VALUES ({}, 'a.png', 'http://www.***/filepath/a.png', NULL, NULL, '/data/path/5000-04/a.png', NULL, NULL, 0, NULL, NULL)".format(att_id)
                i2 = 'INSERT INTO `库名`.`表名2`(`id`, `data_id`, `at_id`, `at_type_id`, `remark`, `tmp`, `created_by`, `created_date`, `deleted`, `last_modified_by`, `last_modified_date`) VALUES ({}, {}, {}, {}, NULL, NULL, NULL, NULL, 0, NULL, NULL)'.format(atta_rel_id,a,att,att_sql)
                k +=k
                self.cursor.execute(i1)
                self.cursor.execute(i2)
                self.connect.commit()
                self.log.info(message="附件图片插入成功,请查看`库名`.`表1`表id={}、`库名`.`表2`表id={}".format(att_id,atta_rel_id) )
            time4 = time.perf_counter()
            self.log.info(message="本次总共上传了{}张附件,共计耗时{}秒。".format(len(b_id ),(time4 - time3)))
            self.connect.close()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
  • 相关阅读:
    word 多级目录的问题
    这个零代码神器,业务不懂技术也能用,大大降低IT人员的报表需求
    Pose Estimation各方法对应的经典论文
    数据结构-二叉树
    时代巨兽!深度神经网络如何改变我们的世界?
    尚硅谷Vue3入门到实战,最新版vue3+TypeScript前端开发教程
    梯度下降算法中的数据标准化预处理(Python实现)
    艾美捷Bio-Helix BluPAD双LED蓝白光照胶台丨舒适、方便
    url取值的两种方式
    keepalived双机热备超详细入门介绍
  • 原文地址:https://blog.csdn.net/zsyzcsan/article/details/125916500