- 系统框图
- 目录结构
- 代码
- 第一步: 多线程运行测试用例,保存测试结果到数据库/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,sysimport timeimport getoptimport xml.etree.ElementTree as ETfrom sqlAPI import SQLTestimport configparserfrom readCase import runCaseByXmlfrom multiprocessing import Lockfrom 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)# 创建信息表infocreate_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') + 1date = 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 #测试用例的总数# 迭代groupgroup_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_nameif group_name == 'info':print('group name cannot be "info"')