def single_2_database(self): ''' data ['UCSEC1.2.16.94', '正常11位199开头', '19989898989', 'GMF_SJ=19989898989'] ''' # 连接数据库 mysql_conn = OperateMysql() (cursor,db) = mysql_conn.get_attr() # 加载excel数据 datas = self._read_excel('tel') id = int(self.step) for data in datas: temp = dict() data_desc = data[1] temp['data_id'] = id temp['data_sort'] = "手机号规则校验" temp['data_key'] =data[2] flag = '-F' if data[1].startswith("正常"): flag = '-T' temp['data_desc'] = data_desc + flag id += 2 self.logger.debug(temp) sj_table = SJ_GZ(self.logger, **temp) sj_table.insert(cursor,db) self.logger.warning('data_id:{}--->成功'.format(temp['data_id'])) mysql_conn.close()
def single_2_database(self): ''' data ['UCSEC1.2.16.94', '正常11位199开头', '19989898989', 'GMF_SJ=19989898989'] ''' # 连接数据库 mysql_conn = OperateMysql(self.config_file) (cursor, db) = mysql_conn.get_cursor() # 加载excel数据 datas = self._read_excel('email') #2 id = int(self.step) for data in datas: temp = dict() data_desc = data[1] temp['data_id'] = id temp['data_sort'] = "邮箱规则校验" #1 temp['nsrsbh'] = data[2] # 4改为对应数据库字段 flag = '-F' if data[1].startswith("正常"): flag = '-T' temp['data_desc'] = data_desc + flag id += 2 self.logger.debug(temp) sj_table = Email_GZ(self.logger, **temp) # 3 sj_table.insert(cursor, db) self.logger.warning('data_id:{}--->成功'.format(temp['data_id'])) mysql_conn.close()
def generate_case_main(self): case_path = os.path.join(PATH, "data", 'cases', self.case_excel) common_datas = self._read_common_sheet(case_path) # 1.从excel加载公共数据 # origin_case = copy.deepcopy(common_datas) step = int(common_datas["step"]) temp_datas = self._read_temp_data( case_path) # 2.从excel加载case中单个或多个字段数据 mysql = OperateMysql(self.config_file, self.logger) # 3.连接数据库 for temp_data in temp_datas: # temp_data ['FHDM','varchar','8'] (key, values_list) = self.generate_values(temp_data) # 4.生成单个或多个变量值 for value in values_list: # ["sql注入","1=1"] temp_copy = copy.deepcopy(self.temp) desc = key + "_" + value[0] # 生成用例描述 self.logger.debug(desc) self.logger.debug(temp_copy) self.update_temp(temp_copy, key, value[1]) # 5.循环keys,并修改对应模板temp里的值 self.update_temp_other(temp_copy, step, common_datas) # 6.修改模板temp里的其他值(如fphm) self.logger.debug(('---update-----', temp_copy)) case = self.update_case(common_datas, step, temp_copy, desc) # 7.将temp加入到case中,并修改case里其他值 mysql.insert_sql(case) # 8.case插入到数据库中 step += 1 step += 12 mysql.close()
def get_keys(self): config_file = os.path.join(PATH, 'config', 'data_generator.ini') self.mysql_conn = OperateMysql(config_file) (cursor, db) = self.mysql_conn.get_dict_cursor() values = list() for class_object in self.class_list: sql_object = class_object(None) values.extend(sql_object.query(cursor)) # [{'data_id': 100, 'data_sort': '手机号规则校验', 'data_desc': '前后空格-F', 'sj': ' 158585888 '},] return values
def yhzc_2_database(self): ''' data: [ 'UCSEC13.8.3', '100%先征后退', 1.0, '', '17%,16%,11%,10%,13%,9%,6%,5%,4%,3%,1.5%,0%,1%,15%', '1.开票申请可以添加此优惠政策\n2.此优惠政策支持税率:17%13%11%6%5%4%3%0%', '暂不支持0%', ''] ''' # 连接数据库 mysql_conn = OperateMysql(self.config_file) (cursor, db) = mysql_conn.get_attr() # 读取excel数据 datas = self._read_excel("yhzc_gz") id = int(self.step) for data in datas: temp = copy.deepcopy(self.template) data_desc = data[1] temp['data_sort'] = "发票优惠政策规则校验" temp['mx_yhzcbs'] = int(data[2]) temp['mx_lslbz'] = data[3] temp['mx_zzstsgl'] = data[1] temp['mx_hsbz'] = 0 temp['mx_kce'] = None temp['mx_spbm'] = "1010101070000000000" slv_list = data[4].replace(',', ',').split(",") for slv in slv_list: flag = '-F' if slv in data[5]: flag = '-T' temp['mx_slv'] = self.percent_2_float(slv) temp['mx_xmje'] = 10000 temp['mx_xmdj'] = 10000 temp['mx_xmsl'] = 1 temp['mx_se'] = self.percent_2_float(slv) * 10000 temp['hjje'] = temp['mx_xmje'] temp['hjse'] = temp['mx_se'] temp['jshj'] = temp['hjse'] + temp['hjje'] temp['data_id'] = id temp['data_desc'] = data_desc + "-税率为" + slv + flag id += 1 self.logger.debug(temp) yhzc_table = Yhzc_GZ(self.logger, **temp) yhzc_table.insert(cursor, db) self.logger.warning('data_id:{}--->成功'.format(temp['data_id'])) id += 12 # 用例数据之间留12个位置 mysql_conn.close()
def generate_case_main(self): datas = self.generate_request_json(self.temp) file_path = os.path.join(PATH, 'data', 'cases', self.case_excel) common_datas = self._read_common_sheet(file_path) # 1.从excel加载公共数据 step = int(common_datas["step"]) mysql = OperateMysql(self.config_file, self.logger) # 2.连接数据库 # for temp_data in temp_datas: for data in datas: desc, temp_copy = data self.logger.debug(desc) self.logger.debug(temp_copy) case = self.update_case(common_datas, step, temp_copy, desc) # 3.将temp加入到case中,并修改case里其他值 mysql.insert_sql(case) # 4.case插入到数据库中 step += 2 mysql.close()
class Generator_Data_FPQZ(Generator): # 从datas_fp读取数据生成发票签章用例 def __init__(self, class_list): self.class_list = class_list super().__init__() # 初始化父类 def get_keys(self): config_file = os.path.join(PATH, 'config', 'data_generator.ini') self.mysql_conn = OperateMysql(config_file) (cursor, db) = self.mysql_conn.get_dict_cursor() values = list() for class_object in self.class_list: sql_object = class_object(None) values.extend(sql_object.query(cursor)) # [{'data_id': 100, 'data_sort': '手机号规则校验', 'data_desc': '前后空格-F', 'sj': ' 158585888 '},] return values def generate_case_main(self): '''从数据库datas_fp中读取数据生成测试脚本''' values = self.get_keys() self.mysql_conn.close() case_path = os.path.join(PATH, "data", 'cases', self.case_excel) common_datas = self._read_common_sheet(case_path) # 1.从excel加载公共数据 step = int(common_datas["step"]) mysql = OperateMysql(self.config_file, self.logger) # 3.连接数据库 for data in values: fpqz = Interface_FPQZ(None, **data) data_dict = fpqz.interface_dict() # {'gmf_sj': '15610 07697'} desc = data['data_sort'] + data['data_desc'] temp_copy = copy.deepcopy(self.temp) self.update_temp(temp_copy, **data_dict) # 5.循环keys,并修改对应模板temp里的值 self.update_temp_other(temp_copy, step, common_datas) # 6.修改模板temp里的其他值(如fphm) self.logger.debug(('---update-----', temp_copy)) case = self.update_case(common_datas, step, temp_copy, desc) # 7.将temp加入到case中,并修改case里其他值 mysql.insert_sql(case) # 8.case插入到数据库中 step += 1 mysql.close() def update_temp(self, temp, mx_key=None, *args, **kwargs): if not mx_key: temp = search_dict(temp, **kwargs) else: pass
def generate_case(self, flag): ''' 生成单个字段的测试用例 temp里的值在update_temp里修改, 请求sql数据库(除request_sql_param外)全部在此函数里修改 :param flag: 1表示生成single用例 2表示生成multiple用例 :no return: 直接把结果写入到数据库 ''' if flag == 1: case_path = os.path.join(self.generate_path, "data", self.single_case_excel) elif flag == 2: case_path = os.path.join(self.generate_path, "data", self.multiple_case_excel) else: raise NotImplementedError # cases对应mysql一条用例,cases为字典类型、key与mysql里的值相同 cases, temp_changes = self._read_common_sheet(case_path) datas = self._read_case_sheet(case_path) self.logger.debug(["{}-type:{}".format(cases, type(cases))]) self.logger.debug(["{}-type:{}".format(datas, type(datas))]) # 连接mysql数据库 mysql = OperateMysql(self.logger) # 定义初始step step = int(cases["step"]) for data in datas: # row 为case sheet第一行数据的列表 temp_one = copy.deepcopy(self.temp) requests = self.generate_request_json(temp_one, data) for request in requests: # requests的结构如下: # (用例描述,request_sql_param的值),用的yield返回,调用一次返回一条 self.logger.debug(["request:", request]) step += 1 case = self.update_cases(cases, step, request, temp_changes) mysql.insert_sql(case) step += 10 mysql.close()
def generate_case_main(self): '''从数据库datas_fp中读取数据生成测试脚本''' values = self.get_keys() self.mysql_conn.close() case_path = os.path.join(PATH, "data", 'cases', self.case_excel) common_datas = self._read_common_sheet(case_path) # 1.从excel加载公共数据 step = int(common_datas["step"]) mysql = OperateMysql(self.config_file, self.logger) # 3.连接数据库 for data in values: fpqz = Interface_FPQZ(None, **data) data_dict = fpqz.interface_dict() # {'gmf_sj': '15610 07697'} desc = data['data_sort'] + data['data_desc'] temp_copy = copy.deepcopy(self.temp) self.update_temp(temp_copy, **data_dict) # 5.循环keys,并修改对应模板temp里的值 self.update_temp_other(temp_copy, step, common_datas) # 6.修改模板temp里的其他值(如fphm) self.logger.debug(('---update-----', temp_copy)) case = self.update_case(common_datas, step, temp_copy, desc) # 7.将temp加入到case中,并修改case里其他值 mysql.insert_sql(case) # 8.case插入到数据库中 step += 1 mysql.close()