def send_request(url, api, data): """ 发送soap协议请求 :param url: 接口地址 :param api: 接口名称 :param data: 请求参数 :return: 响应信息 """ if isinstance(data, str): try: data = json.loads(data) logger.info('获得请求参数<{}>'.format(data)) except Exception: try: data = eval(data) logger.info('获得请求参数<{}>'.format(data)) except Exception as e: logger.error("获得请求参数失败\n错误详情:{}".format(e)) raise e service = WebService.get_client_obj(url) my_api = getattr(service, api) try: logger.info("开始发送[{}]请求".format(api)) response = my_api(data) except WebFault as e: response = e.fault logger.info("返回[{}]接口响应信息为:\n{}".format(api, response)) return response else: logger.info("返回[{}]接口响应信息为:\n{}".format(api, response)) return response
def send_mail(smtp_server, from_user, from_pass_word, to_user, subject, contents, file_name): # 初始化服务器等信息 try: yag = yagmail.SMTP(from_user, from_pass_word, smtp_server) # 发送邮件 yag.send(to_user, subject, contents, file_name) except Exception as e: logger.error("发送邮件失败!\n失败信息:{}".format(e)) else: logger.info("发送{}邮件成功".format(file_name))
def test_user_register(self, value): case_id = value.CaseId case_title = value.Title case_url = value.URL case_data = value.Data api_name = value.ApiName case_expected = HandleJson.json_to_dict(value.Expected) # 期望值(字典) sql = value.Sql request_url = do_config("Project", "Url") + case_url # 请求地址 case_data = DataReplace.parameters_register_api(case_data) response = WebService.send_request(request_url, api_name, case_data) if sql and api_name == 'sendMCode': sql = DataReplace.parameters_register_api(sql) verify_code = str(self.mysql(sql=sql)["Fverify_code"]) setattr(DataReplace, 'verify_code', verify_code) actual_dict = dict(response) if sql and ("is_exist_db" in case_expected.keys()): # 如果注册成功,去验证一下数据库 {"retCode": "0", "retInfo": "ok","is_exist_db":"yes"} case_data = HandleJson.json_to_dict(case_data) user_name = case_data["user_id"] # 注册成功之后得到user_id 去数据库搜索对应的帐号信息 setattr(DataReplace, 'user_name', user_name) sql = DataReplace.parameters_register_api(sql) user_info = self.mysql(sql) if user_info: actual_dict["is_exist_db"] = "yes" else: actual_dict["is_exist_db"] = "no" actual_str = str(actual_dict) try: logger.info("测试用例执行实际结果为:[{}]".format(actual_str)) do_excel.write_cell(do_config("Excel", "userRegisterApi"), case_id + 1, do_config("Excel", "actual_column"), actual_str) self.assertEqual(case_expected, actual_dict, msg='用例[{}]测试失败'.format(case_title)) except AssertionError as e: do_excel.write_cell(do_config("Excel", "userRegisterApi"), case_id + 1, do_config("Excel", "result_column"), 'Fail', color='red') logger.error("测试用例[{}]执行结果:{}\n具体原因信息:{}".format( case_title, "Fail", e)) raise e else: do_excel.write_cell(do_config("Excel", "userRegisterApi"), case_id + 1, do_config("Excel", "result_column"), 'Pass', color='green') logger.error("测试用例[{}]执行结果:{}".format(case_title, "Pass"))
def test_bind_bank_card(self, value): case_id = value.CaseId case_title = value.Title case_url = value.URL case_data = value.Data api_name = value.ApiName case_expected = HandleJson.json_to_dict(value.Expected) request_url = do_config("Project", "Url") + case_url sql = value.Sql case_data = DataReplace.parameters_bind_bank_card_api(case_data) response = WebService.send_request(request_url, api_name, case_data) if sql and api_name == "sendMCode": code_sql = DataReplace.parameters_bind_bank_card_api(sql) verify_code = str(self.mysql(sql=code_sql)["Fverify_code"]) setattr(DataReplace, 'verify_code', verify_code) if sql and api_name == "userRegister": case_data = HandleJson.json_to_dict(case_data) user_name = case_data["user_id"] setattr(DataReplace, "user_name", user_name) uid_sql = DataReplace.parameters_bind_bank_card_api(sql) trued_uid = str(self.mysql(uid_sql)["Fuid"]) setattr(DataReplace, "trued_uid", trued_uid) actual_dict = dict(response) actual_str = str(actual_dict) try: logger.info("测试用例执行实际结果为:[{}]".format(actual_str)) do_excel.write_cell(do_config("Excel", "bindBankCardApi"), case_id + 1, do_config("Excel", "actual_column"), actual_str) self.assertEqual(case_expected, actual_dict, msg='用例[{}]测试失败'.format(case_title)) except AssertionError as e: do_excel.write_cell(do_config("Excel", "bindBankCardApi"), case_id + 1, do_config("Excel", "result_column"), 'Fail', color='red') logger.error("测试用例[{}]执行结果:{}\n具体原因信息:{}".format( case_title, "Fail", e)) raise e else: do_excel.write_cell(do_config("Excel", "bindBankCardApi"), case_id + 1, do_config("Excel", "result_column"), 'Pass', color='green') logger.error("测试用例[{}]执行结果:{}".format(case_title, "Pass"))
def write_cell(self, sheet_name, row, column, value, color='black'): """write cell value with color""" if isinstance(row, int) and isinstance(column, int): try: cell_obj = self.wb[sheet_name].cell(row, column) cell_obj.font = Font(color=self.RGBDict[color], bold=True) cell_obj.value = value self.wb.save(self.filename) logger.info("Excel文件[{}]表单[{}]写入数据[{}]".format(self.filename, sheet_name, value)) except Exception as e: logger.error("Excel文件[{}]表单[{}]写入数据错误\n错误信息:{}".format(self.filename, sheet_name, e)) raise e else: logger.error("Excel文件写入数据错误\n错误信息:{}".format('row and column must be type int')) raise TypeError('row and column must be type int')
def test_send_code(self, value): case_id = value.CaseId case_title = value.Title case_url = value.URL case_data = value.Data api_name = value.ApiName case_expected = HandleJson.json_to_dict(value.Expected) request_url = do_config("Project", "Url") + case_url case_data = DataReplace.parameters_verify_code_api(case_data) response = WebService.send_request(request_url, api_name, case_data) actual_dict = dict(response) actual_str = str(actual_dict) try: logger.info("测试用例执行实际结果为:[{}]".format(actual_str)) do_excel.write_cell(do_config("Excel", "sendMCodeApi"), case_id + 1, do_config("Excel", "actual_column"), actual_str) self.assertEqual(case_expected, actual_dict, msg='用例[{}]测试失败'.format(case_title)) except AssertionError as e: do_excel.write_cell(do_config("Excel", "sendMCodeApi"), case_id + 1, do_config("Excel", "result_column"), 'Fail', color='red') logger.error("测试用例[{}]执行结果:{}\n具体原因信息:{}".format( case_title, "Fail", e)) raise e else: do_excel.write_cell(do_config("Excel", "sendMCodeApi"), case_id + 1, do_config("Excel", "result_column"), 'Pass', color='green') logger.error("测试用例[{}]执行结果:{}".format(case_title, "Pass"))
def test_verify_user_auth(self, value): case_id = value.CaseId case_title = value.Title case_url = value.URL case_data = value.Data api_name = value.ApiName sql = value.Sql case_expected = HandleJson.json_to_dict(value.Expected) request_url = do_config("Project", "Url") + case_url case_data = DataReplace.parameters_verify_user_auth_api(case_data) response = WebService.send_request(request_url, api_name, case_data) actual_dict = dict(response) if sql and api_name == "sendMCode": code_sql = DataReplace.parameters_verify_user_auth_api(sql) verify_code = str(self.mysql(sql=code_sql)["Fverify_code"]) setattr(DataReplace, 'verify_code', verify_code) if sql and api_name == "userRegister": case_data = HandleJson.json_to_dict(case_data) user_name = case_data["user_id"] setattr(DataReplace, "user_name", user_name) registered_uid_sql = DataReplace.parameters_verify_user_auth_api( sql) registered_uid = str(self.mysql(registered_uid_sql)["Fuid"]) setattr(DataReplace, "uid", registered_uid) # 验证实名认证成功时, 是否是有效的认证(姓名和身份证不匹配时是无效的认证) if sql and api_name == "verifyUserAuth": case_data = HandleJson.json_to_dict(case_data) true_name = case_data["true_name"] # 认证成功时的真实姓名 setattr(DataReplace, "true_name", true_name) sql = DataReplace.parameters_verify_user_auth_api(sql) state = str(self.mysql(sql)["Flstate"]) if state == "1": actual_dict["Flstate"] = "有效" else: actual_dict["Flstate"] = "无效" actual_str = str(actual_dict) try: logger.info("测试用例执行实际结果为:[{}]".format(actual_str)) do_excel.write_cell(do_config("Excel", "verifyUserAuthApi"), case_id + 1, do_config("Excel", "actual_column"), actual_str) self.assertEqual(case_expected, actual_dict, msg='用例[{}]测试失败'.format(case_title)) except AssertionError as e: do_excel.write_cell(do_config("Excel", "verifyUserAuthApi"), case_id + 1, do_config("Excel", "result_column"), 'Fail', color='red') logger.error("测试用例[{}]执行结果:{}\n具体原因信息:{}".format( case_title, "Fail", e)) raise e else: do_excel.write_cell(do_config("Excel", "verifyUserAuthApi"), case_id + 1, do_config("Excel", "result_column"), 'Pass', color='green') logger.error("测试用例[{}]执行结果:{}".format(case_title, "Pass"))