def generate_data(xml_name='CaseDatabase.xml'): """ 初始化数据库数据 :param xml_name: 数据库xml配置文件名称 :return: """ xml_path = os.path.join(case_database_path, xml_name) mylog.info('Init database from xml:{}'.format(xml_name)) myxml = MyXml(xml_path) page = myxml.read_xml() # 得到xml的根节点 excel_list = page.findall('excel') # 获取所有excel节点 for excel in excel_list: mysql = MySql() mysql.connect() excel_name = excel.get('name') # 获得excel名称 sheet_list = excel.findall('sheet') # 获得当前excel的sheet节点 for sheet in sheet_list: sheet_name = sheet.get('name') # 得到sheet名称 data = read_data(excel_name, sheet_name) # 获得当前sheet页的数据 case_field = data[0] # 获得用例字段列表,即excel第一行 for case_data in data[1:]: # 用例的数据实际是从excel的第二行开始的 generate_data_num = case_field.index( 'generate_data') # 用例是否需要生成数据库数据的字段索引 is_generate_data = case_data[ generate_data_num] # 用例是否需要生成数据库数据的字段数据:'True'/'False' if is_generate_data == 'True': database_list = sheet.findall( 'database') # 得到sheet下所有的database节点 for database in database_list: database_name = database.get('name') # 获得数据库名称 table_list = database.findall( 'table') # 得到database下所有的table节点 for table in table_list: table_name = table.get('name') # 获得数据表名称 field_list = table.findall( 'field') # 得到table下所有field节点 fields = '' # 定义写入数据表的字段 values = '' # 定义写入数据表的数据 for field in field_list: fields = fields + field.text + ',' # 数据表字段合成字符串,用','隔开 field_num = case_field.index( field.get('name')) # 写入数据表的字段索引位置 values = values + str( case_data[field_num] ) + ',' # 写入数据合成字符串,用','隔开 # sql语句格式化,fields和values在合成字符串时末尾保留了',',所以需要去掉 sql = 'INSERT {table_name}({fields}) VALUES({values})'\ .format(table_name=table_name, fields=fields.rstrip(','), values=values.rstrip(',')) mysql.execute(sql) # 执行sql语句,初始化数据库 mysql.close() # 关闭数据库
def clear_data(xml_name='CaseDatabase.xml'): """ 清空数据库数据 :param xml_name: 数据库xml配置文件名称 :return: """ xml_path = os.path.join(case_database_path, xml_name) # 获取xml文件路径 mylog.info('Clear database from xml:{}'.format(xml_name)) myxml = MyXml(xml_path) page = myxml.read_xml() # 得到xml的根节点 clear = page.find('clear') # 获取clear节点 database_list = clear.findall('database') # 得到sheet下所有的database节点 for database in database_list: database_name = database.get('name') # 获得数据库名称 mysql = MySql() mysql.connect() table_list = database.findall('table') # 得到database下所有的table节点 for table in table_list: table_name = table.text # 获得数据表名称 sql = 'DELETE FROM {table_name}'.format(table_name=table_name) mysql.execute(sql) # 执行sql语句,初始化数据库 mysql.close() # 关闭数据库
from Common.conf import Read_conf from Conf import Project_path from Common.mysql import MySql from Common.log import Logger from Common import globalvar as gl import time,unittest,allure,pytest,sys from ddt import ddt,data test_data_path= Project_path.TestData_path + "Test_data1.xls" mode_path=Project_path.Conf_path+"interf_TestMode.conf" http_conf_path=Project_path.Conf_path+"http.conf" host=Read_conf(http_conf_path).get_value("HTTP","host") mode=Read_conf(mode_path).get_value("Mode","login_mode") conf_path=Project_path.Conf_path+"db.conf" config=Read_conf(conf_path).get_value("Mysql","config") sql=MySql(config) datas= Read_xls().read_data(test_data_path,booknum=0) #默认读取第一个表格 keys_list = datas[0] test_data=[] if mode == 1: Logger().info("[mode:1],本次测试执行基本流测试用例") for i in range(len(datas)): if datas[i][2] == 1: test_data.append(datas[i]) i += 1 else: continue elif mode == 0: Logger().info("[mode:0],本次测试执行全部测试用例") test_data = datas[1:]
from Common.read_xls_news import Read_xls from Common.mysql import MySql from Common.conf import Read_conf yidian = "E:/python_space/1test/yidian.xls" r_xls = Read_xls(yidian) data = r_xls.read_data() print(data) yidian_db = "E:/python_space/1test/yidian.conf" config = Read_conf(yidian_db).get_value("YiDian", "config") sql1 = "INSERT INTO bp_event_copy VALUES(%s,%s,%s,'2018-05-23 13:51:56',%s,%s)" sql2 = "Select * from bp_event" MySql(config).insert_manydata(sql1, data) a = MySql(config).read_data(sql2) print(a[-1]) # for each in data: # sql="INSERT INTO bp_event VALUES(%s,%s,%s,'2018-05-23 13:51:56',%s,%s)" # MySql(config).insert_data(sql,tuple(each))