持续集成的回归测试框架

本文介绍了如何使用Python实现多线程运行测试用例,并将结果保存到SQLite数据库。接着通过dbHtml.py脚本从数据库中读取数据,生成详细的测试报告HTML文件。报告内容包括版本信息、测试开始和结束时间、组别等关键信息。
摘要由CSDN通过智能技术生成
  • 系统框图


  • 目录结构   
  • 代码
  • 第一步: 多线程运行测试用例,保存测试结果到数据库/result/regression.db:
         脚本执行命令:python readXml.py -t 4 config.txt
         参数-t 4:4个线程运行

    config.txt:配置文件
; 配置文件

[config]
; 记录测试向量的xml文件
run_xml=E:/python/regression/testcases/test1.xml

; 运行目录
run_dir=E:/python/regression/result

readXml.py:解析xml文件,获取测试用例的列表
#-*- coding:utf-8 -*-
import os,sys
import time
import getopt
import xml.etree.ElementTree as ET
from sqlAPI import SQLTest
import configparser
from readCase import runCaseByXml
from multiprocessing import Lock
from multiprocessing.pool import ThreadPool

def runTestByXml(xml_file,run_dir):
    '''read the xml file and check each testcases'''
    # 读取xml文件
    xml_root = ET.parse(xml_file)
    xml = xml_root.getroot()
    
    # 创建数据库
    db_file_path = os.path.join(run_dir,'regression.db')
    with open(db_file_path,'w'):
        db = SQLTest(path = db_file_path)
    # 创建信息表info
    create_info_sql = '''create table if not exists 'info' (\
                         'id' integer(16) NOT NULL,\
                         'version' nvarchar(64) NOT NULL,\
                         'begin_time' float NOT NULL,\
                         'end_time' float NOT NULL,\
                         'tables' nvarchar(128) DEFAULT NULL,\
                         'test_group' nvarchar(64) NOT NULL,\
                         PRIMARY KEY('id')\
                     )'''
    db.createTable(create_info_sql)
    insert_sql = '''INSERT INTO info values (?,?,?,?,?,?)'''
    info_id = db.rowCount('info') + 1
    date = time.strftime('%y%m%d',time.localtime(time.time()))
    data = [(info_id,'v_01',time.time(),'','','regression1')]
    db.insert(insert_sql,data)

    # 信息统计
    num_fail = 0       #失败的测试用例
    total_cases = 0    #测试用例的总数
    
    # 迭代group
    group_list = xml.find('common').find('groups').text.split(',')
    group_list = [item.strip() for item in group_list if item.strip()]
    tables = []
    tables_name = ''
    lock = Lock()
    for group in group_list:
        # 在SqlDB中创建表
        group_name = xml.find(group).find('name').text
        # 创建表单group_name
        if group_name == 'info':
            print('group name cannot be "info"')
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值