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_recharge(self, value): row = value.CaseId + 1 # 用例ID所在行号 precondition = value.Precondition # excel用例的前置条件 title = value.Title # 用例标题 url = do_conf('URL', 'Host_Url') + value.URL # 用例url request_value = value.Data # 请求参数 request_method = value.Method # 请求方法 select_sql = value.Sql # 查询充值结果的sql语句 replace_sql = recharge_parameters(select_sql) recharge_expected = HandleJson.json_to_python(value.Expected) # 期望结果 log.info('执行充值-测试用例"{}"开始'.format(title)) request_value = recharge_parameters(request_value) before_amount = self.mysql(sql=replace_sql)['LeaveAmount'] # 充值前的金额 # 切换会话 if precondition == '用户未登录': response = self.request(request_method, url=url, data=request_value) else: response = request(request_method, url=url, data=request_value) after_amount = self.mysql(sql=replace_sql)['LeaveAmount'] # 充值后的金额 actual_amount = str(after_amount - before_amount) # 实际金额 actual_code = response.json()['code'] # 实际code # 构造个实际结果的字典 actual_result = dict(leaveamount=actual_amount, code=actual_code) do_excel.write_cell( do_conf('SheetName', 'Recharge'), row, do_conf('ExcelNum', 'Actual_Column'), HandleJson.python_to_json(actual_result) ) try: self.assertEqual(recharge_expected, actual_result, msg='测试{}失败'.format(title)) except AssertionError as e: do_excel.write_cell( do_conf('SheetName', 'Recharge'), row, do_conf('ExcelNum', 'Result_Column'), do_conf('Result', 'Fail'), color=RED) log.error('{}-测试[{}] :Failed\nDetails:\n{}'.format(inspect.stack()[0][3], title, e)) raise e else: do_excel.write_cell( do_conf('SheetName', 'Recharge'), row, do_conf('ExcelNum', 'Result_Column'), do_conf('Result', 'Pass'), color=GREEN) log.info('{}-测试[{}] :Passed'.format(inspect.stack()[0][3], title)) log.info('执行登录-测试用例"{}"结束'.format(title))
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 test_add(self, value): row = value.CaseId + 1 # 用例ID所在行号 precondition = value.Precondition # excel用例的前置条件 title = value.Title # 用例标题 url = do_conf('URL', 'Host_Url') + value.URL # 用例url request_method = value.Method # 请求方法 request_value = value.Data # 请求参数 select_sql = value.Sql # 查询数据库中不存在的member id add_expected = HandleJson.json_to_python(value.Expected) # 期望结果 if precondition == '借款人用户ID不存在': not_exist_loan_member_id = str( int(self.mysql(select_sql)['Id']) - 1) request_value = add_parameters(not_exist_loan_member_id, request_value) else: request_value = add_parameters('', request_value) log.info('执行加标-测试用例"{}"开始'.format(title)) response = request(request_method, url=url, data=request_value) actual_result = response.json() do_excel.write_cell(do_conf('SheetName', 'Add'), row, do_conf('ExcelNum', 'Actual_Column'), response.text) try: self.assertEqual(add_expected, actual_result, msg='测试{}失败'.format(title)) except AssertionError as e: do_excel.write_cell(do_conf('SheetName', 'Add'), row, do_conf('ExcelNum', 'Result_Column'), do_conf('Result', 'Fail'), color=RED) log.error('{}-测试[{}] :Failed\nDetails:\n{}'.format( inspect.stack()[0][3], title, e)) raise e else: do_excel.write_cell(do_conf('SheetName', 'Add'), row, do_conf('ExcelNum', 'Result_Column'), do_conf('Result', 'Pass'), color=GREEN) log.info('{}-测试[{}] :Passed'.format(inspect.stack()[0][3], title)) log.info('执行加标-测试用例"{}"结束'.format(title))
def test_register(self, value): row = value.CaseId + 1 # 用例ID所在行号 title = value.Title # 用例标题 url = do_conf('URL', 'Host_Url') + value.URL # 用例url request_value = value.Data # 请求参数 request_method = value.Method # 请求方法 log.info('开始执行注册-"{}"测试用例'.format(title)) # 转json的目的是防止期望结果和实际结果的字符串形式匹配不上(excel 存储的期望结果有空格) expected = HandleJson.json_to_python(value.Expected) # 期望结果 not_exist_phone = self.mysql.get_not_exist_phone() # 正向用例的注册账号 request_value = register_login_parameters(not_exist_phone, request_value) response = self.request(request_method, url=url, data=request_value) actual_result = response.json() do_excel.write_cell(do_conf('SheetName', 'Register'), row, do_conf('ExcelNum', 'Actual_Column'), response.text) try: self.assertEqual(expected, actual_result, msg='测试{}失败'.format(title)) except AssertionError as e: do_excel.write_cell(do_conf('SheetName', 'Register'), row, do_conf('ExcelNum', 'Result_Column'), do_conf('Result', 'Fail'), color=RED) log.error('{}-测试[{}] :Failed\nDetails:\n{}'.format( inspect.stack()[0][3], title, e)) raise e else: do_excel.write_cell(do_conf('SheetName', 'Register'), row, do_conf('ExcelNum', 'Result_Column'), do_conf('Result', 'Pass'), color=GREEN) log.info('{}-测试[{}] :Passed'.format(inspect.stack()[0][3], title)) log.info('执行注册-测试用例"{}"结束'.format(title))
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"))
def test_bid_loan(self, value): row = value.CaseId + 1 # 用例ID所在行号 precondition = value.Precondition # excel用例的前置条件 title = value.Title # 用例标题 url = do_conf('URL', 'Host_Url') + value.URL # 用例url request_method = value.Method # 请求方法 request_value = value.Data # 请求参数 select_sql = value.Sql audit_expected = HandleJson.json_to_python(value.Expected) # 期望结果 if precondition == '投资人不存在': not_exist_member_id = str(int(self.mysql(select_sql)['Id']) - 1) setattr(DataReplace, 'non_exist_member_id', not_exist_member_id) request_value = invest_parameters(request_value) elif precondition == '标的不存在': not_exist_loan_id = str(int(self.mysql(select_sql)['Id']) - 1) setattr(DataReplace, 'non_exist_loan_id', not_exist_loan_id) request_value = invest_parameters(request_value) elif precondition == '标的非竞标状态': # 设置标的为非竞标状态 audit.audit_loan_api(method='post', url=do_conf('URL', 'Host_Url') + '/loan/audit', data={ "id": getattr(DataReplace, 'loan_id'), "status": 1 }) request_value = invest_parameters(request_value) elif precondition == '标的金额不足': audit.audit_loan_api(method='post', url=do_conf('URL', 'Host_Url') + '/loan/audit', data={ "id": getattr(DataReplace, 'loan_id'), "status": 4 }) request_value = invest_parameters(request_value) elif precondition == '标的满标': # 这里不确定测试的对不对 sql = invest_parameters(select_sql) remain_amount = float( self.mysql(sql=sql)["invest_amount"]) # 标的剩余金额 setattr(DataReplace, 'remain_amount', remain_amount) # 给DataReplace添加一个剩余金额类属性 request_value = invest_parameters(request_value) request(request_method, url=url, data=request_value) else: request_value = invest_parameters(request_value) log.info('执行竞标-测试用例"{}"开始'.format(title)) response = request(request_method, url=url, data=request_value) actual_result = response.json() do_excel.write_cell(do_conf('SheetName', 'invest'), row, do_conf('ExcelNum', 'Actual_Column'), response.text) try: self.assertEqual(audit_expected, actual_result, msg='测试{}失败'.format(title)) except AssertionError as e: do_excel.write_cell(do_conf('SheetName', 'invest'), row, do_conf('ExcelNum', 'Result_Column'), do_conf('Result', 'Fail'), color=RED) log.error('{}-测试[{}] :Failed\nDetails:\n{}'.format( inspect.stack()[0][3], title, e)) raise e else: do_excel.write_cell(do_conf('SheetName', 'invest'), row, do_conf('ExcelNum', 'Result_Column'), do_conf('Result', 'Pass'), color=GREEN) log.info('{}-测试[{}] :Passed'.format(inspect.stack()[0][3], title)) log.info('执行竞标-测试用例"{}"结束'.format(title))
def test_add_class(self, value): pc = ParseConfigFile() row = value.CaseId + 1 #测试用列的编号 title = value.Precondition #用列标题 # url = pc.getConfValue(CONFIG_PATH,"URL","Host_Url") + value.URL #用例URL url = "http://ci.ytesting.com/api/3school/school_classes" # log.info(url) request_value = value.Data #请求参数 log.info(request_value) request_method = value.Method #请求方法 exist = value.Exist log.info("exist的值为{},数据类型为{}".format(exist, type(exist))) log.info('开始执行班级-"{}"测试用例'.format(title)) if request_method == "get" or request_method == "post": response = self.request(request_method, url, data=request_value) request_value = HandleJson.json_to_python( request_value) # 将传输的数据变成Python格式的数据 second_response = classManage.get_class_invitecode_and_id( request_value["grade"]) # 获取添加之后的invitecode和id的值 expect_text = value.Expected # 得到期望值 last_expect = register_add_class(str(second_response[0]), str(second_response[1]), expect_text) last_expect = HandleJson.json_to_python(last_expect) elif request_method == "put": if exist: exist_Id = HandleJson.json_to_python(exist) url = classManage.modify_class_manage(data=exist, grade=exist_Id["grade"]) else: url = classManage.modify_class_manage() log.info("修改班级之前获取到的{}和现有的班级{}".format( url, classManage.get_class_invitecode_and_id())) response = self.request(request_method, url, data=request_value) expect_text = value.Expected last_expect = HandleJson.json_to_python(expect_text) else: self.request(self.method, self.url, data=self.request_value) request = HandleJson.json_to_python(self.request_value) classId = (classManage.get_class_invitecode_and_id( request["grade"])[1]) log.info("获取删除的calssId{}".format(classId)) if exist: response = classManage.delete_add_class(classId, exist) log.info("当exist不为空的时候返回的值为{},response的值为{}".format( response.json, response)) else: response = classManage.delete_add_class(classId) log.info("exist的值为resposne的值为{}".format(response)) last_expect = value.Expected #得到期望值 last_expect = HandleJson.json_to_python(last_expect) log.info(response.text) actual_result = response.json() do_excel.write_cell( pc.getConfValue(CONFIG_PATH, "SheetName", "Class"), int(row), int(pc.getConfValue(CONFIG_PATH, "ExcelNum", "Actual_Column")), response.text) try: self.assertEqual(last_expect, actual_result, msg="测试{}失败".format(title)) except AssertionError as e: do_excel.write_cell( pc.getConfValue(CONFIG_PATH, "SheetName", "Class"), int(row), int(pc.getConfValue(CONFIG_PATH, "ExcelNum", "Result_Column")), pc.getConfValue(CONFIG_PATH, "Result", 'Fail'), color=RED) log.error('{}-测试[{}] :Failed\nDetails:\n{}'.format( inspect.stack()[0][3], title, e)) raise e else: do_excel.write_cell( pc.getConfValue(CONFIG_PATH, "SheetName", "Class"), int(row), int(pc.getConfValue(CONFIG_PATH, "ExcelNum", "Result_Column")), pc.getConfValue(CONFIG_PATH, "Result", 'Pass'), color=GREEN) log.info('{}-测试[{}] :Passed'.format(inspect.stack()[0][3], title)) log.info('执行班级-测试用例"{}"结束'.format(title))