示例#1
0
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()  # 关闭数据库
示例#2
0
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()  # 关闭数据库
示例#3
0
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:]
示例#4
0
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))