def test_register(self, set_up, obj): url = hy.read_yaml('excel', 'base_url') + obj.url request_data = HandleRe.get_data(data=obj.data) result = set_up[0].send(url=url, data=request_data) try: assert [obj.expected, obj.msg] == [result.json()['code'], result.json()['msg']] if obj.caseId == 1: phone = result.json()['data']['mobile_phone'] mysql_result = set_up[1].get_mysql_result(hy.read_yaml( 'mysql', 'sql'), args=phone) assert mysql_result is not None except AssertionError as e: self.he.write_excel(rowid=int(obj.caseId) + 1, colid=7, sheet_value='fail') logger.error(e) raise e else: self.he.write_excel(rowid=int(obj.caseId) + 1, colid=7, sheet_value='success') logger.info(f"用例{obj.title}执行通过") finally: self.he.write_excel(rowid=int(obj.caseId) + 1, colid=8, sheet_value=result.text)
def generate_phone(cls, reg_name, pwd='12345678', reg_type=1): hr = HandleRequest() hm = HandleMysql() phone = hm.get_no_exist_phone() header = hy.read_yaml('request', 'header') hr.common_head(header) data = { "mobile_phone": phone, "pwd": pwd, 'type': reg_type, 'reg_name': reg_name } value_result = hr.send(url=hy.read_yaml('register', 'url'), data=data) if value_result.json()['code'] == 0: result_phone = value_result.json()['data']['mobile_phone'] user_id = value_result.json()['data']['id'] person_result = { reg_name: { "mobile_phone": result_phone, 'pwd': pwd, "type": reg_type, "id": user_id, "reg_name": reg_name } } hr.close() hm.close() return person_result
def get_phone_nums(cls, username, password='******', type=1): hm = HandleMysql() hr = HandleRequests() url = hy.read_yaml('request', 'base_url') + hy.read_yaml( 'request', 'register_url') phone = hm.no_exsit_phone_mysql() hr.common_heads({ hy.read_yaml('request', 'request_head'): hy.read_yaml('request', 'request_value') }) datas = { "mobile_phone": phone, "pwd": password, "type": type, "reg_name": username } res = hr.send(url=url, data=datas) if res.json()['code'] == 0: id = res.json()['data']['id'] phone_data = { username: { "mobile_phone": phone, "pwd": password, "type": type, "id": id, "reg_name": username } } hm.close() hr.close() return phone_data
def get_phone(cls, user, password="******", type_num=1): hr = HandleRequest() hm = HandleMysql() hr.common_head({'X-Lemonban-Media-Type': 'lemonban.v2'}) base_url = hy.read_yaml('api', 'load') register_url = hy.read_yaml('api', 'register') all_url = ''.join((base_url, register_url)) while True: # 获取在数据库中不存在的电话号码 phone = hm.get_right_phone() data = { "mobile_phone": phone, "pwd": password, "type": type_num, "reg_name": user } result = hr.send(url=all_url, data=data) if result.json()['code'] == 0 and result.json()["msg"] == "OK": break my_result = hm.get_mysql_result(hy.read_yaml('mysql', 'user_id'), args=phone) user_id = my_result[0]['id'] result_data = { user: { "user_phone": phone, "pwd": password, "user_id": user_id, "reg_name": user } } hm.close() hr.close() return result_data
def get_phone(cls, username, password='******', type=1): hr = HandleRequest() hm = HandleMysql() base_url = hy.read_yaml('api', 'load') register_url = hy.read_yaml('api', 'register') all_url = ''.join((base_url, register_url)) while True: phone = hm.get_non_existent() data = { "mobile_phone": phone, "pwd": password, "type": type, "reg_name": username } hr.common_head(hy.read_yaml('api', 'header')) result = hr.send(url=all_url, data=data) if result.json()['code'] == 0 and result.json()['msg'] == 'OK': break user_id = hm.get_mysql_result(sql=hy.read_yaml('mysql', 'user_id'), args=phone) result_data = { username: { "mobilephone": phone, "pwd": password, "user_id": user_id[0]['id'], "reg_name": username } } hr.close() hm.close() return result_data
def set_up(): hr = HandleRequests() hm = HandleMysql() hl = HandleYaml(PHONE_PATH) hr.common_heads({hy.read_yaml('request', 'request_head'): hy.read_yaml('request', 'request_value')}) yield hr, hm, hl hr.close() hm.close()
def __init__(self): self.conn = pymysql.connect(host=hy.read_yaml('mysql', 'host'), user=hy.read_yaml('mysql', 'user'), password=hy.read_yaml('mysql', 'password'), port=hy.read_yaml('mysql', 'port'), charset='utf8', db=hy.read_yaml('mysql', 'db'), cursorclass=pymysql.cursors.Cursor) self.cursor = self.conn.cursor()
def if_phone_exist(self, phone): result = self.get_mysql_result(hy.read_yaml('mysql', 'sql'), args=phone) if result: return True else: return False
def phone_exist_mysql(self, phone): sql = hy.read_yaml('mysql', 'phone_sql') result = self.get_mysql_result(sql=sql, args=phone) if result: return True else: return False
def test_invest(self, set_up, obj): url = hy.read_yaml('excel', 'base_url') + obj.url request_data = HandleRe.get_data(data=obj.data) result = set_up[0].send(url=url, data=request_data) if obj.caseId == 2: login_token = result.json()['data']['token_info']['token'] set_up[0].common_head({"Authorization": "Bearer " + login_token}) try: assert [obj.expected, obj.msg] == [result.json()['code'], result.json()['msg']] except AssertionError as e: self.he.write_excel(rowid=int(obj.caseId) + 1, colid=7, sheet_value='fail') logger.error(e) raise e else: self.he.write_excel(rowid=int(obj.caseId) + 1, colid=7, sheet_value='success') logger.info(f"用例{obj.title}执行通过") finally: self.he.write_excel(rowid=int(obj.caseId) + 1, colid=8, sheet_value=result.text)
def test_login(self, set_up, obj): url = hy.read_yaml('excel', 'base_url') + obj.url # if obj.caseId == 2: # HandlePhone.loop_generate_phone() request_data = HandleRe.get_data(data=obj.data) result = set_up[0].send(url=url, data=request_data) try: assert [obj.expected, obj.msg] == [result.json()['code'], result.json()['msg']] # self.assertListEqual([obj.expected, obj.msg], [result.json()['code'], result.json()['msg']], # msg=f"用例{obj.title}执行完成") except AssertionError as e: self.he.write_excel(rowid=int(obj.caseId) + 1, colid=7, sheet_value='fail') logger.error(e) raise e else: self.he.write_excel(rowid=int(obj.caseId) + 1, colid=7, sheet_value='success') logger.info(f"用例{obj.title}执行通过") finally: self.he.write_excel(rowid=int(obj.caseId) + 1, colid=8, sheet_value=result.text)
def set_up(): hr = HandleRequest() hm = HandleMysql() hr.common_head(hy.read_yaml('api', 'header')) yield hr, hm, hy, hl hr.close() hm.close()
def test_invest(self, set_up, case): url = hy.read_yaml('request', 'base_url') + case.url data = HandleRe.handle_para(case.data) res = set_up[0].send(url=url, data=data) if case.caseId == 2: invest_token = res.json()['data']['token_info']['token'] set_up[0].common_heads({'Authorization': 'Bearer ' + invest_token})
def if_exsit_phone(self, phone): result = self.get_mysql_result(sql=hy.read_yaml('phone', 'phone_sql'), arg=phone) if result: return True else: return False
def get_non_existent(self): sql = hy.read_yaml('mysql', 'phone_sql') while True: phone = self.random_phone() bl = self.mysql_exist(sql=sql, args=phone) if not bl: break return phone
def set_up(): hr = HandleRequest() hm = HandleMysql() hl = HandleYaml(PERSONPHONE_PATH) hr.common_head(hy.read_yaml('request', 'header')) yield hr, hm, hl hr.close() hm.close()
def get_logger(): logger = logging.getLogger('my_interface_test') logger.setLevel(hy.read_yaml("logger", 'level')) my_format = hy.read_yaml("logger", 'format') formatter = logging.Formatter(my_format) # 控制台输出 sh = logging.StreamHandler() sh.setLevel(hy.read_yaml("logger", 'level')) sh.setFormatter(formatter) logger.addHandler(sh) # 文件中输出 fh = logging.FileHandler(filename=LOG_FILE_PATH, encoding='utf-8') fh.setLevel(hy.read_yaml("logger", 'level')) fh.setFormatter(formatter) logger.addHandler(fh) return logger
def getlogger(self): mylogger = logging.getLogger(hy.read_yaml('log', 'logname')) my_format = hy.read_yaml('log', 'format') mylogger.setLevel(hy.read_yaml('log', 'level')) format_log = logging.Formatter(fmt=my_format) # 控制台输出 sh = logging.StreamHandler() sh.setLevel(hy.read_yaml('log', 'level')) sh.setFormatter(format_log) mylogger.addHandler(sh) # 日志文件输出 fh = logging.FileHandler(self.filepath) fh.setLevel(hy.read_yaml('log', 'level')) fh.setFormatter(format_log) mylogger.addHandler(fh) return mylogger
def generate_phone(cls): my_data = {} generate_phone_path = os.path.join(config_path, hy.read_yaml('api', 'phonePath')) my_yaml = HandleYaml(filepath=generate_phone_path) admin_result = cls.get_phone(username='******', type=0) my_data.update(admin_result) invest_result = cls.get_phone(username='******') my_data.update(invest_result) loan_result = cls.get_phone(username='******') my_data.update(loan_result) my_yaml.write_yaml(data=my_data, mode='w')
def test_recharge(self, set_up, case): url = hy.read_yaml('request', 'base_url') + case.url data = HandleRe.handle_para(case.data) invest_phone = set_up[2].read_yaml('investor', 'mobile_phone') before_send_amount = 0 if case.sql: phone_result = set_up[1].get_mysql_result(case.sql, arg=invest_phone) if phone_result['amount']: before_send_amount = float(phone_result['amount']) res = set_up[0].send(url=url, data=data) if case.caseId == 2: invest_token = res.json()['data']['token_info']['token'] set_up[0].common_heads({'Authorization': 'Bearer ' + invest_token})
def test_register(self, set_up, case): url = hy.read_yaml('request', 'base_url') + case.url data = HandleRe.handle_para(case.data) res = set_up[0].send(url=url, data=data) try: assert [case.expected, case.msg] == [res.json()['code'], res.json()['msg']] self.obj_li.write_excel(int(case.caseId) + 1, 8, value=str(res.json())) except AssertionError as e: my_logger.error(f'用例{case.title}断言失败') self.obj_li.write_excel(int(case.caseId)+1,7, value='fail') raise e else: my_logger.info(f'用例{case.title}断言成功') self.obj_li.write_excel(int(case.caseId)+1,7, value='success')
def handle_para(cls, data): hl = HandleYaml(PHONE_PATH) hm = HandleMysql() if re.search(r'{no_exist_phone}', data): phone = hm.no_exsit_phone_mysql() re_data = re.sub(r'{no_exist_phone}', phone, data) HandleMysql().close() return re_data if re.search(r'{invest_phone}', data): re_data = re.sub(r'{invest_phone}', hl.read_yaml('investor', 'mobile_phone'), data) return re_data if re.search(r'{user_id_re}', data): re_data = re.sub(r'{user_id_re}', str(hl.read_yaml('investor', 'id')), data) return re_data if re.search(r'{member_id_re}', data): re_data = re.sub(r'{member_id_re}', str(hl.read_yaml('borrower', 'id')), data) return re_data if re.search(r'{borrow_phone}', data): re_data = re.sub(r'{borrow_phone}', hl.read_yaml('borrower', 'mobile_phone'), data) return re_data if re.search(r'{no_exist_num}', data): re_data = re.sub( r'{no_exist_num}', str( hm.get_mysql_result(hy.read_yaml('mysql', 'id_sql')) ['maxId'] + 1), data) return re_data if re.search(r'{admin_phone}', data): re_data = re.sub(r'{admin_phone}', hl.read_yaml('admin', 'mobile_phone'), data) return re_data if re.search(r'{load_id}', data): re_data = re.sub(r'{load_id}', str(getattr(cls, 'program_id')), data) return re_data if re.search(r'{user_id}', data): my_data = re.sub(r'{user_id}', str(hl.read_yaml('investor', 'id')), data) re_data = re.sub(r'{loan_id_re}', str(getattr(cls, 'program_id')), my_data) return re_data return data
def test_recharge(self, set_up, obj): url = hy.read_yaml('excel', 'base_url') + obj.url request_data = HandleRe.get_data(data=obj.data) result_sql = obj.sql invest_phone = set_up[2].read_yaml("investor", 'mobile_phone') if result_sql: mysql_result = set_up[1].get_mysql_result(sql=result_sql, args=invest_phone) if mysql_result[0]: before_amount = float(mysql_result[0]) else: before_amount = 0 result = set_up[0].send(url=url, data=request_data) if obj.caseId == 2: login_token = result.json()['data']['token_info']['token'] set_up[0].common_head({"Authorization": "Bearer " + login_token}) try: assert [obj.expected, obj.msg] == [result.json()['code'], result.json()['msg']] if result_sql: mysql_result = set_up[1].get_mysql_result(sql=result_sql, args=invest_phone) if mysql_result: after_amount = float(mysql_result[0]) recharge_value = float( result.json()['data']['leave_amount']) assert after_amount - before_amount == recharge_value except AssertionError as e: self.he.write_excel(rowid=int(obj.caseId) + 1, colid=7, sheet_value='fail') logger.error(e) raise e else: self.he.write_excel(rowid=int(obj.caseId) + 1, colid=7, sheet_value='success') logger.info(f"用例{obj.title}执行通过") finally: self.he.write_excel(rowid=int(obj.caseId) + 1, colid=8, sheet_value=result.text)
def test_register_case(self, case): title = case.title base_url = hy.read_yaml('api', 'load') all_url = ''.join((base_url, case.url)) re_data = HandleRe.get_re(case.data) result = self.hr.send(url=all_url, data=re_data) code = result.json()['code'] msg = result.json()['msg'] try: self.assertListEqual([case.expected, case.msg], [code, msg], msg=f"用例{title}测试完成") if int(case.caseId) == 1: response_phone = result.json()['data']['mobile_phone'] bl = self.hm.phone_exist_mysql(response_phone) self.assertTrue(bl) except Exception as e: self.he.write_excel(int(case.caseId) + 1, 7, value="fail") self.he.write_excel(int(case.caseId) + 1, 8, value=result.text) logger.error(e) raise e else: self.he.write_excel(int(case.caseId) + 1, 7, value="success") self.he.write_excel(int(case.caseId) + 1, 8, value=result.text) logger.info(title)
def random_telephone(): return hy.read_yaml('phone', 'pre') + ''.join( random.sample('0123456789', 8))
def test_login(self, set_up, case): url = hy.read_yaml('request', 'base_url') + case.url if case.caseId == 2: HandlePhone.phone_yaml()
def random_phone(cls): return hy.read_yaml('mysql', 'phone_pre') + str(''.join(random.sample('0123456789', 8)))
else: result = self.cursor.fetchone() return result # 判断随机生成的手机号是否在mysql中存在 def if_exsit_phone(self, phone): result = self.get_mysql_result(sql=hy.read_yaml('phone', 'phone_sql'), arg=phone) if result: return True else: return False # 生成mysql中不存在的手机号 def no_exsit_phone_mysql(self): while True: phone = self.random_telephone() if not self.if_exsit_phone(phone=phone): break return phone # 关闭mysql连接 def close(self): self.cursor.close() self.connect.close() if __name__ == '__main__': phone_sql = hy.read_yaml('phone', 'phone_sql') print(HandleMysql().get_mysql_result(phone_sql, '15816298405'))
def get_phone(self): return hy.read_yaml('mysql', 'pre_phone') + ''.join( random.sample('0123456789', 8))