def testloans(self,case): #准备测试数据,替换用例中相应的手机号、密码、用户id、项目id url = conf.get("env", "url") + case["url"] method = case["method"] headers = eval(conf.get("env", "headers")) expected = eval(case["expected"]) row = case["case_id"] + 1 title = case["title"] case["data"] = ReplaceData.replace_data(case["data"]) data = eval(case["data"]) #发送请求,获取实际结果 respons = self.request.send(url=url, method=method, headers=headers, params=data,json=data) res = respons.json() #断言:比对预期结果和实际结果 try: self.assertEqual(expected["code"],res["code"]) self.assertIn(expected["msg"],res["msg"]) except AssertionError as e : print("预期结果:{}".format(expected)) print("实际结果:{}".format(res)) self.excel.write_data(row=row,column=8,value="未通过") log.error("用例未通过:{},错误原因:{}".format(title,e)) raise e else: self.excel.write_data(row=row, column=8, value="通过") log.debug("用例通过:{}".format(title))
def testadd(self, case): #准备测试数据,对登录接口用例替换相应的手机号、密码 url = conf.get("env", "url") + case["url"] method = case["method"] headers = eval(conf.get("env", "headers")) expected = eval(case["expected"]) row = case["case_id"] + 1 title = case["title"] case["data"] = ReplaceData.replace_data(case["data"]) data = eval(case["data"]) # 判断是否是添加项目接口,添加项目接口则加上请求头,替换相应的用户id if case["interface"] == "add": headers["Authorization"] = ReplaceData.Authorization #添加时间戳和签名到json请求体 sign = HandleSign.generate_sign(ReplaceData.token) data.update(sign) #判断是否需要sql校验 if case["sql_check"]: # 查询执行用例前当前用户添加的项目总数 start_loan = self.db.find_count(case["sql_check"].format( ReplaceData.member_id)) #发送请求,获取实际结果 respons = self.request.send(url=url, method=method, headers=headers, json=data) res = respons.json() # 判断是否是登录接口 if case["interface"] == "login": # 提取token,保存为类属性 ReplaceData.token = jsonpath.jsonpath(res, "$..token")[0] token_type = jsonpath.jsonpath(res, "$..token_type")[0] ReplaceData.Authorization = token_type + " " + ReplaceData.token # 提取用户id保存为类属性 ReplaceData.member_id = str(jsonpath.jsonpath(res, "$..id")[0]) #断言:比对预期结果和实际结果 try: self.assertEqual(expected["code"], res["code"]) self.assertEqual(expected["msg"], res["msg"]) if case["sql_check"]: # 查询用例执行后当前用户添加的项目总数 end_loan = self.db.find_count(case["sql_check"].format( ReplaceData.member_id)) self.assertEqual(1, end_loan - start_loan) except AssertionError as e: print("预期结果:{}".format(expected)) print("实际结果:{}".format(res)) self.excel.write_data(row=row, column=8, value="未通过") log.error("用例未通过:{},错误原因:{}".format(title, e)) raise e else: self.excel.write_data(row=row, column=8, value="通过") log.debug("用例通过:{}".format(title))
def testinfo(self, case): #准备测试数据,替换用例中相应的手机号、密码、用户id、项目id method = case["method"] headers = eval(conf.get("env", "headers")) expected = eval(case["expected"]) row = case["case_id"] + 1 title = case["title"] case["data"] = ReplaceData.replace_data(case["data"]) data = eval(case["data"]) # 判断是否是用户信息接口,用户信息接口则加上请求头 if case["interface"] == "info": headers["Authorization"] = ReplaceData.Authorization # 添加时间戳和签名到json请求体 sign = HandleSign.generate_sign(ReplaceData.token) data.update(sign) case["url"] = ReplaceData.replace_data(case["url"]) url = conf.get("env", "url") + case["url"] #发送请求,获取实际结果 respons = self.request.send(url=url, method=method, headers=headers, json=data) res = respons.json() #获取用户id和token值,并保存为类属性 if case["interface"] == "login": ReplaceData.token = jsonpath.jsonpath(res, "$..token")[0] ReplaceData.member_id = str(jsonpath.jsonpath(res, "$..id")[0]) ReplaceData.Authorization = jsonpath.jsonpath( res, "$..token_type")[0] + " " + jsonpath.jsonpath( res, "$..token")[0] #断言:比对预期结果和实际结果 try: self.assertEqual(expected["code"], res["code"]) self.assertIn(expected["msg"], res["msg"]) #判断是否需要SQL校验 if case["sql_check"]: #获取执行结果的用户可用余额 info = jsonpath.jsonpath(res, "$..leave_amount")[0] # 获取预期结果的用户可用余额 user_info = self.db.find_one(case["sql_check"].format( ReplaceData.member_id))["leave_amount"] self.assertEqual(user_info, Decimal(str(info))) except AssertionError as e: print("预期结果:{}".format(expected)) print("实际结果:{}".format(res)) self.excel.write_data(row=row, column=8, value="未通过") log.error("用例未通过:{},错误原因:{}".format(title, e)) raise e else: self.excel.write_data(row=row, column=8, value="通过") log.debug("用例通过:{}".format(title))
def testwithdraw(self, case): #准备测试数据,对登录接口用例替换相应的测试手机号、密码 url = conf.get("env", "url") + case["url"] method = case["method"] headers = eval(conf.get("env", "headers")) expected = eval(case["expected"]) row = case["case_id"] + 1 title = case["title"] case["data"] = ReplaceData.replace_data(case["data"]) data = eval(case["data"]) # 判断是否是取现接口,取现接口则加上请求头,替换相应的用户id,添加时间戳和签名到json请求体 if case["interface"] == "withdraw": headers["Authorization"] = ReplaceData.Authorization sign = HandleSign.generate_sign(ReplaceData.token) data.update(sign) # 判断是否需要进行sql校验 if case["sql_check"]: #查询充值前用户的可用余额 start_leave_amount = self.db.find_one(case["sql_check"].format( conf.get("test_data", "phone")))["leave_amount"] #发送请求,获取实际结果 respons = self.request.send(url=url, method=method, headers=headers, json=data) res = respons.json() # 判断是否是登录接口 if case["interface"] == "login": # 提取token,保存为类属性 ReplaceData.token = jsonpath.jsonpath(res, "$..token")[0] token_type = jsonpath.jsonpath(res, "$..token_type")[0] ReplaceData.Authorization = token_type + " " + ReplaceData.token # 提取用户id保存为类属性 ReplaceData.member_id = str(jsonpath.jsonpath(res, "$..id")[0]) #断言,比对结果 try: self.assertEqual(expected["code"], res["code"]) self.assertEqual(expected["msg"], res["msg"]) if case["sql_check"]: end_leave_amount = self.db.find_one(case["sql_check"].format( conf.get("test_data", "phone")))["leave_amount"] self.assertEqual(Decimal(str(data["amount"])), start_leave_amount - end_leave_amount) except AssertionError as e: print("预期结果:{}".format(expected)) print("实际结果:{}".format(res)) self.excel.write_data(row=row, column=8, value="未通过") log.error("用例未通过:{},错误原因:{}".format(title, e)) raise e else: self.excel.write_data(row=row, column=8, value="通过") log.debug("用例通过:{}".format(title))
def testinvest(self, case): #准备测试数据,替换用例中相应的手机号、密码、用户id、项目id url = conf.get("env", "url") + case["url"] method = case["method"] headers = eval(conf.get("env", "headers")) expected = eval(case["expected"]) row = case["case_id"] + 1 title = case["title"] case["data"] = ReplaceData.replace_data(case["data"]) data = eval(case["data"]) # 判断是否是投资接口,投资接口则加上请求头 if case["interface"] != "login": headers["Authorization"] = ReplaceData.Authorization # 添加时间戳和签名到json请求体 sign = HandleSign.generate_sign(ReplaceData.token) data.update(sign) #判断是否需要sql校验 if case["sql_check"]: # 判断SQL校验是普通用例还是生成了回款计划的用例 if case["title"] == "投资金额等于项目剩余可投金额": sql = eval(case["sql_check"]) # 查询执行用例前当前用户的可用余额数 start_leave_amount = self.db.find_one(sql[0].format( ReplaceData.member_id))["leave_amount"] # 查询执行用例前该项目中当前用户的投资记录总数 start_invest = self.db.find_count(sql[1].format( ReplaceData.loan_id, ReplaceData.member_id)) # 查询执行用例前当前该项目中当前用户的流水记录总数 start_financelog = self.db.find_count(sql[2].format( ReplaceData.member_id)) # 查询执行用例前当前该项目中当前用户的回款记录总数 start_repayment = self.db.find_count(sql[3].format( ReplaceData.loan_id, ReplaceData.member_id)) else: # 查询执行用例前该项目中当前用户的投资记录总数 start_invest = self.db.find_count(case["sql_check"].format( getattr(ReplaceData, "loan_id"), getattr(ReplaceData, "member_id"))) #发送请求,获取实际结果 respons = self.request.send(url=url, method=method, headers=headers, json=data) res = respons.json() #获取管理员用户id和token值,并保存为类属性 if case["interface"] == "login": ReplaceData.member_id = str(jsonpath.jsonpath(res, "$..id")[0]) ReplaceData.token = jsonpath.jsonpath(res, "$..token")[0] ReplaceData.Authorization = jsonpath.jsonpath( res, "$..token_type")[0] + " " + jsonpath.jsonpath( res, "$..token")[0] # 获取加标项目id,并保存为类属性 if case["interface"] == "add": ReplaceData.loan_id = str(jsonpath.jsonpath(res, "$..id")[0]) #断言:比对预期结果和实际结果 try: self.assertEqual(expected["code"], res["code"]) self.assertIn(expected["msg"], res["msg"]) #判断是否需要SQL校验 if case["sql_check"]: #判断SQL校验是普通用例还是生成了回款计划的用例 if case["title"] == "投资金额等于项目剩余可投金额": sql = eval(case["sql_check"]) # 查询执行用例前当前用户的可用余额数 end_leave_amount = self.db.find_one(sql[0].format( ReplaceData.member_id))["leave_amount"] self.assertEqual( end_leave_amount, start_leave_amount - Decimal(str(data["amount"]))) # 查询执行用例前该项目中当前用户的投资记录总数 end_invest = self.db.find_count(sql[1].format( ReplaceData.loan_id, ReplaceData.member_id)) self.assertEqual(1, end_invest - start_invest) # 查询执行用例前当前该项目中当前用户的流水记录总数 end_financelog = self.db.find_count(sql[2].format( ReplaceData.member_id)) self.assertEqual(1, end_financelog - start_financelog) # 查询执行用例前当前该项目中当前用户的回款记录总数 end_repayment = self.db.find_count(sql[3].format( ReplaceData.loan_id, ReplaceData.member_id)) self.assertEqual(3, end_repayment - start_repayment) else: # 查询执行用例前该项目中当前用户的投资记录总数 end_invest = self.db.find_count(case["sql_check"].format( ReplaceData.loan_id, ReplaceData.member_id)) self.assertEqual(1, end_invest - start_invest) except AssertionError as e: print("预期结果:{}".format(expected)) print("实际结果:{}".format(res)) self.excel.write_data(row=row, column=8, value="未通过") log.error("用例未通过:{},错误原因:{}".format(title, e)) raise e else: self.excel.write_data(row=row, column=8, value="通过") log.debug("用例通过:{}".format(title))