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"))
Exemple #5
0
 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')
Exemple #6
0
 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"))