def test_recharge(self, case): # ------第一步:准备用例数据------------ # 拼接完整的接口地址 url = conf.get_str("env", "url") + case["url"] # 请求的方法 method = case["method"] # 请求参数 # 替换用例参数 case["data"] = replace_data(case["data"]) data = eval(case["data"]) # 请求头 headers = eval(conf.get_str("env", "headers")) headers["Authorization"] = getattr(TestData, "token_data") # 预期结果 expected = eval(case["expected"]) # 该用例在表单的中所在行 row = case["case_id"] + 1 # ------第二步:发送请求到接口,获取实际结果-------- if case["check_sql"]: sql = case["check_sql"].format(conf.get_str("test_data", "user")) # 获取充值之前的余额 start_money = self.db.get_one(sql)[0] response = self.http.send(url=url, method=method, json=data, headers=headers) result = response.json() # -------第三步:比对预期结果和实际结果----- try: self.assertEqual(expected["code"], result["code"]) self.assertEqual((expected["msg"]), result["msg"]) if case["check_sql"]: sql = case["check_sql"].format( conf.get_str("test_data", "user")) # 获取充值之后的余额 end_money = self.db.get_one(sql)[0] # 充值的金额 recharge_money = decimal.Decimal(str(data["amount"])) my_log.info("充值之前金额为{}\n,充值金额:{}\n,充值之后金额为{},".format( start_money, recharge_money, end_money)) # 数据库中返回的数据做断言,判断是否有一条数据 self.assertEqual(recharge_money, end_money - start_money) except AssertionError as e: self.excel.write_data(row=row, column=8, value="未通过") my_log.info("用例:{}--->执行未通过".format(case["title"])) print("预取结果:{}".format(expected)) print("实际结果:{}".format(result)) raise e else: self.excel.write_data(row=row, column=8, value="通过") my_log.info("用例:{}--->执行通过".format(case["title"]))
def test_withdraw(self, case): # 第一步:准备测试用例数据 url = conf.get_str("env", "url") + case["url"] data = eval(replace_data(case["data"])) method = case["method"] headers = eval(conf.get_str("env", "headers")) if case["interface"] != "login": headers["Authorization"] = getattr(TestData, "token_data") expected = eval(case["expected"]) row = case["case_id"] + 1 if case["check_sql"]: sql = replace_data(case["check_sql"]) start_money = self.db.get_one(sql)[0] res = self.http.send(url=url, method=method, json=data, headers=headers) result = res.json() if case["interface"] == "login": id = jsonpath.jsonpath(result, "$..id")[0] setattr(TestData, "member_id", str(id)) token_type = jsonpath.jsonpath(result, "$..token_type")[0] token = jsonpath.jsonpath(result, "$..token")[0] token_data = token_type + " " + token setattr(TestData, "token", token) try: self.assertEqual(expected["code"], result["code"]) self.assertEqual(expected["msg"], result["msg"]) if case["check_sql"]: sql = replace_data(case["check_sql"]) end_money = self.db.get_one(sql)[0] withdraw_money = decimal.Decimal(str(data["amount"])) my_log.info("取现之前金额为:{}\n取现金额为:{}\n取现之后金额为:{}".format( start_money, withdraw_money, end_money)) self.assertEqual(withdraw_money, start_money - end_money) except AssertionError as e: self.excel.write_data(row=row, column=8, value="未通过") my_log.info("用例:{}---->执行未通过".format(case["title"])) print("预期结果:{}".format(expected)) print("实际结果:{}".format(result)) raise e else: self.excel.write_data(row=row, column=8, value="通过") my_log.info("用例:{}---->执行未通过".format(case["title"]))
def test_login(self, test_data): # ------第一步:准备用例数据------------ # 拼接完整的接口地址 url = conf.get_str("env", "url") + test_data["url"] # 请求的方法 method = test_data["method"] # 请求参数 data = eval(test_data["data"]) # 请求头 headers = eval(conf.get_str("env", "headers")) # 预期结果 expected = eval(test_data["expected"]) # 该用例在表单的中所在行 row = test_data["case_id"] + 1 # ------第二步:发送请求到接口,获取实际结果-------- response = self.http.send(url=url, method=method, json=data, headers=headers) result = response.json() # -------第三步:比对预期结果和实际结果----- try: # 业务码断言 assert expected["code"] == result["code"] # msg断言 assert expected["msg"] == result["msg"] except AssertionError as e: # excel中回写结果 self.excel.write_data(row=row, column=8, value="未通过") # 记录apicases.xlsx日志 my_log.info("用例:{}--->执行未通过".format(test_data["title"])) my_log.error(e) # 报告中打印预期和实际结果 print("预取结果:{}".format(expected)) print("实际结果:{}".format(result)) raise e else: # excel中回写结果 self.excel.write_data(row=row, column=8, value="通过") # 记录日志 my_log.info("用例:{}--->执行通过".format(test_data["title"]))
def test_withdraw(self, case): # ------第一步:准备用例数据------------ # 拼接完整的接口地址 url = conf.get_str("env", "url") + case["url"] # 请求的方法 method = case["method"] # 请求参数 # 判断是否有用户id需要替换 case["data"] = replace_data(case["data"]) data = eval(case["data"]) # 请求头 headers = eval(conf.get_str("env", "headers")) if case["interface"] != "login": headers["Authorization"] = getattr(TestData, "token_data") # 预期结果 expected = eval(case["expected"]) # 该用例在表单的中所在行 row = case["case_id"] + 1 # ------第二步:发送请求到接口,获取实际结果-------- # 判断是否需要sql校验 if case["check_sql"]: sql = case["check_sql"].format(conf.get_str("test_data", 'user')) # 获取取充值之前的余额 start_money = self.db.get_one(sql)[0] # 发送请求,获取结果 response = self.http.send(url=url, method=method, json=data, headers=headers) result = response.json() if case["interface"] == "login": # -------如果是登录接口,从响应结果中提取用户id和token------------- # 1、用户id member_id = jsonpath.jsonpath(result, "$..id")[0] setattr(TestData, "member_id", str(member_id)) # 2、提取token token_type = jsonpath.jsonpath(result, "$..token_type")[0] token = jsonpath.jsonpath(result, "$..token")[0] token_data = token_type + " " + token # 下面这行代码和上面哪行代码是一个意思,都是将token设为类属性 setattr(TestData, "token_data", token_data) # -------第三步:比对预期结果和实际结果----- try: self.assertEqual(expected["code"], result["code"]) self.assertEqual((expected["msg"]), result["msg"]) # 判断是否需要数据库校验 if case["check_sql"]: sql = case["check_sql"].format( conf.get_str("test_data", 'user')) # 获取取充值之前的余额 end_money = self.db.get_one(sql)[0] recharge_money = decimal.Decimal(str(data["amount"])) my_log.info("取现之前金额为{}\n,取现金额为:{}\n,取现之后金额为{},".format( start_money, recharge_money, end_money)) # 进行断言(开始的金额减去结束的金额) self.assertEqual(recharge_money, start_money - end_money) except AssertionError as e: self.excel.write_data(row=row, column=8, value="未通过") my_log.info("用例:{}--->执行未通过".format(case["title"])) print("预取结果:{}".format(expected)) print("实际结果:{}".format(result)) raise e else: self.excel.write_data(row=row, column=8, value="通过") my_log.info("用例:{}--->执行通过".format(case["title"]))
def test_recharge(self, case): # ------第一步:准备用例数据------------ # 拼接完整的接口地址 url = conf.get_str("env", "url") + case["url"] # 请求的方法 method = case["method"] #请求参数 #判断是否有用户id需要替换 if "#member_id#" in case["data"]: #进行替换 case["data"] = case["data"].replace("#member_id#", str(self.member_id)) data = eval(case["data"]) #请求头 headers = eval(conf.get_str("env", "headers")) headers["Authorization"] = self.token_data #预期结果 expected = eval(case["expected"]) #改用例在表单中的所在行 row = case["case_id"] + 1 # ------第二步:发送请求到接口,获取实际结果-------- #1.首先进行数据库的校验 if case["check_sql"]: sql = case["check_sql"].format(conf.get_str("test_data", 'user')) #获取充值之前的余额 start_money = self.db.get_one(sql)[0] response = self.http.send(url=url, method=method, json=data, headers=headers) result = response.json() # -------第三步:比对预期结果和实际结果----- try: self.assertEqual(expected["code"], result["code"]) self.assertEqual((expected["msg"]), result["msg"]) if case["check_sql"]: sql = case["check_sql"].format( conf.get_str("test_data", 'user')) #获取充值之前的余额 end_money = self.db.get_one(sql)[0] recharge_money = decimal.Decimal(str( data["amount"])) #decimal只支持整数,如果有小数的话先转化成str就会自动保存1位小数 my_log.info("充值之前金额为{}\n,充值金额为:{}\n,充值之后金额为{},".format( start_money, recharge_money, end_money)) # 进行断言 self.assertEqual(recharge_money, end_money - start_money) except AssertionError as e: self.excel.write_data(row=row, column=8, value="未通过") my_log.info("用例:{}---->执行通过".format(case["title"])) print("预期结果:{}".format(expected)) print("实际结果:{}".format(result)) raise e else: self.excel.write_data(row=row, column=8, value="通过") my_log.info("用例:{}--->执行通过".format(case["title"]))