def test_business_flow_api(self, case): logger.info("#################开始执行业务流接口#######################") # 替换 case = replace_case_with_re(case) # 请求 # 判断是否要添加token if hasattr(Data, "token"): resp = self.hr.send_requests(case["method"], case["url"], case["request_data"], token=getattr(Data, "token")) else: resp = self.hr.send_requests(case["method"], case["url"], case["request_data"]) # 如果有提取字段,从响应消息中提取对应字段,赋值给Data属性 if case["extract"]: set_dataclass_attr_from_resp(resp.json(), case["extract"]) # 如果有预期结果,则将实际结果与预期结果进行比较 if case["expected"]: actual = resp.json() logger.info("用例执行实际结果:{}".format(actual)) expected = eval(case["expected"]) logger.info("用例预期结果:{}".format(expected)) # 断言 try: assert actual["code"] == expected["code"] assert actual["msg"] == expected["msg"] except AssertionError: logger.exception("断言失败!") raise except Exception: logger.exception("除断言以外的报错!") raise
def testLogin(self, case): logger.info("*****************开始执行登录接口用例**************************") # 替换需要替换的未注册的手机号 case = replace_case_with_re(case) # 替换需要替换的--系统中已存在的手机号--从配置文件读取 if case["request_data"].find("*phone*") != -1: phone = conf.get("user", "user") case["request_data"] = case["request_data"].replace( "*phone*", phone) # 替换需要替换的--系统中已存在的手机号--从配置文件读取 if case["request_data"].find("*pwd*") != -1: pwd = conf.get("user", "pwd") case["request_data"] = case["request_data"].replace("*pwd*", pwd) logger.info("当前测试用例为:\n {}".format(case)) # 发起请求 res = self.hr.send_requests(case["method"], case["url"], case["request_data"]) if case["expected"]: try: # 实际结果 actual = res.json() logger.info("实际结果为:{}".format(actual)) expected = eval(case["expected"]) logger.info("预期结果为:{}".format(case["expected"])) assert actual["code"] == expected["code"] assert actual["msg"] == expected["msg"] except AssertionError: logger.exception("断言失败") raise except Exception: logger.exception("除断言以外的报错") raise
def testRecharge(self, case): logger.info("*****************开始执行充值接口用例**************************") # 替换 case = replace_case_with_re(case) logger.info("当前测试用例为:\n {}".format(case)) # 发起请求 # 判断是否要传递token值 if hasattr(Data, "token"): res = self.hr.send_requests(case["method"], case["url"], case["request_data"], token=getattr(Data, "token")) else: res = self.hr.send_requests(case["method"], case["url"], case["request_data"]) # 如果有提取字段,那么需要从响应中提取对应数据,设置为Data.token if case["extract"]: set_dataclass_attr_from_resp(res.json(), case["extract"]) # 如果有预期结果,需要把响应结果与预期结果进行比较 if case["expected"]: # 响应结果 actual = res.json() logger.info("用例实际执行结果:\n {}".format(actual)) expected = eval(case["expected"]) logger.info("用例预期结果:\n {}".format(expected)) # 断言 try: assert actual["code"] == expected["code"] assert actual["msg"] == expected["msg"] if actual["data"]['leave_amount']: assert actual["data"]['leave_amount'] == float( getattr(Data, "money")) except AssertionError: logger.exception("断言失败!") raise # 把异常抛给unittest框架 except Exception: logger.exception("除断言以外的异常报错!") raise # 如果有数据库校验,则进行数据库校验 if case["check_sql"]: ha = HandleAssert() ha.assert_sql(case["check_sql"])
def test_register(self, case): logger.info( "*************************** 开始执行注册接口测试用例 ***************************" ) # 替换手机号 case = replace_case_with_re(case) # 替换需要替换的--系统中已存在的手机号--从配置文件读取 if case["request_data"].find("*phone*") != -1: phone = conf.get("user", "user") case["request_data"] = case["request_data"].replace( "*phone*", phone) # 替换需要替换的--系统中已存在的手机号--从配置文件读取 if case["request_data"].find("*pwd*") != -1: pwd = conf.get("user", "pwd") case["request_data"] = case["request_data"].replace("*pwd*", pwd) # 发起请求 resp = self.hr.send_requests(case["method"], case["url"], case["request_data"]) logger.info("当前测试用例为:\n {}".format(case)) if case["expected"]: # 响应结果 actual = resp.json() logger.info("用例实际执行结果:\n {}".format(actual)) expected = eval(case["expected"]) logger.info("用例预期结果:\n {}".format(expected)) # 断言 try: assert actual["code"] == expected["code"] assert actual["msg"] == expected["msg"] except AssertionError: logger.exception("断言失败!") raise # 把异常抛给unittest框架 except Exception: logger.exception("除断言以外的异常报错!") raise if case["check_sql"]: sleep(0.5) # 等待服务器数据与数据库交互完成 ha = HandleAssert() ha.assert_sql(case["check_sql"])
def test_add_bid_api(self, case): logger.info( "########################开始执行添加项目接口#########################") # 替换 case = replace_case_with_re(case) logger.info("当前执行用例为:\n {}".format(case)) # 请求 # 判断是否需要传递token if hasattr(Data, "token"): resp = self.hr.send_requests(case["method"], case["url"], case["request_data"], token=getattr(Data, "token")) else: resp = self.hr.send_requests(case["method"], case["url"], case["request_data"]) # 提取需要的变量 if case["extract"]: set_dataclass_attr_from_resp(resp.json(), case["extract"]) # 如果有预期结果则用实际结果与预期结果进行比较 if case["expected"]: actual = resp.json() logger.info("用例执行结果为: {}".format(actual)) expected = eval(case["expected"]) logger.info("用例预期结果为:{}".format(expected)) try: assert actual["code"] == expected["code"] if expected.get("msg"): assert actual["msg"] == expected["msg"] except AssertionError: logger.exception("断言失败!") raise AssertionError except: logger.exception("断言以外的报错!") raise