def test_add(self, case): # 准备用例数据 phone = conf.get("test_data", "phone") pwd = conf.get("test_data", "pwd") member_id, token = HandleSetup.handle_setup(phone, pwd) start_count = TestAdd.handle_sql(self, case, member_id) data, res = HandleSetup.handle_case(case, member_id, token) row = case["case_id"] + 1 expected = eval(case["expected"]) # 断言,比对预期结果和实际结果 try: if start_count != 0: self.assertEqual(expected["code"], res["code"]) self.assertEqual(expected["msg"], res["msg"]) end_count = TestAdd.handle_sql(self, case, member_id) self.assertEqual(1, end_count - start_count) except AssertionError as e: log.error("用例--{}--执行未通过".format(case["title"])) log.debug("预期结果:{}".format(expected)) log.debug("实际结果:{}".format(res)) log.exception(e) self.excel.write_data(row=row, column=8, value="未通过") raise e else: # 结果回写excel中 log.info("用例--{}--执行通过".format(case["title"])) self.excel.write_data(row=row, column=8, value="通过")
def test_register(self, case): # 准备用例数据 method = case["method"] url = conf.get("env", "url") + case["url"] if case["interface"] == "register": # 注册接口,则随机生成一个用户名和email EnvData.name = self.random_username() EnvData.email = self.random_email() data = eval(replace_data(case["data"])) expected = eval(replace_data(case["expected"])) row = case["case_id"] + 1 # 第二步:发送请求获取实际结果 res = (requests.request(method=method, url=url, json=data)).json() # 第三步:断言 try: assert_dict(expected, res) # 判断是否需要进行sql校验 if case["check_sql"]: sql = replace_data(case["check_sql"]) res = db.find_count(sql) self.assertEqual(1, res) except AssertionError as e: # 结果回写excel中 log.error("用例--{}--执行未通过".format(case["title"])) log.debug("预期结果:{}".format(expected)) log.debug("实际结果:{}".format(res)) log.exception(e) self.excel.write_data(row=row, column=8, value="未通过") raise e else: # 结果回写excel中 log.info("用例--{}--执行通过".format(case["title"])) self.excel.write_data(row=row, column=8, value="通过")
def test_withdraw(self, case): # 第一步准备用例参数 phone = conf.get("test_data", "phone") pwd = conf.get("test_data", "pwd") member_id, token = HandleSetup.handle_setup(phone, pwd) # 判断该用例是否需要数据库校验,获取提现之前的余额 start_money = TestWithdraw.handle_sql(self, case, member_id) data, res = HandleSetup.handle_case(case, member_id, token) row = case["case_id"] + 1 expected = eval(case["expected"]) # 第三步:断言预期结果和实际结果 try: if start_money != 0: self.assertEqual(expected["code"], res["code"]) self.assertEqual(expected["msg"], res["msg"]) end_money = TestWithdraw.handle_sql(self, case, member_id) withdraw_money = decimal.Decimal(str(data["amount"])) self.assertEqual(withdraw_money, start_money - end_money) except AssertionError as e: # 结果回写excel中 log.error("用例--{}--执行未通过".format(case["title"])) log.debug("预期结果:{}".format(expected)) log.debug("实际结果:{}".format(res)) log.exception(e) self.excel.write_data(row=row, column=8, value="未通过") raise e else: # 结果回写excel中 log.info("用例--{}--执行通过".format(case["title"])) self.excel.write_data(row=row, column=8, value="通过")
def test_interface(self, case): login() newproject() # 1.准备用例数据 EnvData.name = random_intername() url = conf.get("env", "url") + case["url"] method = case["method"] data = eval(replace_data(case["data"])) expected = eval(replace_data(case["expected"])) headers = {"Authorization": getattr(EnvData, "token")} row = case["case_id"] + 1 if case["check_sql"]: sql = replace_data(case["check_sql"]) start_count = db.find_count(sql) res = (request(method=method, url=url, json=data, headers=headers)).json() # 第三步,断言预期结果和实际结果 try: assert_dict(expected, res) if case["check_sql"]: sql = replace_data(case["check_sql"]) end_count = db.find_count(sql) self.assertEqual(1, end_count - start_count) except AssertionError as e: log.error("用例--{}--执行未通过".format(case["title"])) log.debug("预期结果:{}".format(expected)) log.debug("实际结果:{}".format(res)) log.exception(e) self.excel.write_data(row=row, column=8, value="未通过") raise e else: # 结果回写excel中 log.info("用例--{}--执行通过".format(case["title"])) self.excel.write_data(row=row, column=8, value="通过")
def test_login(self, case): # 第一步:准备用例数据 # 请求方法 method = case["method"] # 请求地址 url = case["url"] # 请求参数 data = eval(case["data"]) # 请求头 headers = eval(conf.get("env", "headers")) # 预期结果 expected = eval(case["expected"]) # 用例所在行 row = case["case_id"] + 1 # 第二步:发送请求获取实际结果 response = request(method=method, url=url, json=data, headers=headers) # 获取实际结果 res = response.json() # 第三步:断言 try: self.assertEqual(expected["code"], res["code"]) self.assertEqual(expected["msg"], res["msg"]) except AssertionError as e: # 结果回写excel中 log.error("用例--{}--执行未通过".format(case["title"])) log.debug("预期结果:{}".format(expected)) log.debug("实际结果:{}".format(res)) log.exception(e) self.excel.write_data(row=row, column=8, value="未通过") raise e else: # 结果回写excel中 log.info("用例--{}--执行通过".format(case["title"])) self.excel.write_data(row=row, column=8, value="通过")
def test_add(self, case): # 准备用例数据 phone = conf.get("test_data", "phone") pwd = conf.get("test_data", "pwd") member_id, token = HandleSetup.handle_setup(phone, pwd) case["url"] = case["url"].replace("#member_id#", member_id) url = conf.get("env", "url") + case["url"] method = case["method"] headers = {"X-Lemonban-Media-Type": "lemonban.v1"} response = request(url=url, method=method, json=data, headers=headers) res = response.json() row = case["case_id"] + 1 expected = eval(case["expected"]) try: self.assertEqual(expected["code"], res["code"]) self.assertEqual(expected["msg"], res["msg"]) except AssertionError as e: # 结果回写excel中 log.error("用例--{}--执行未通过".format(case["title"])) log.debug("预期结果:{}".format(expected)) log.debug("实际结果:{}".format(res)) log.exception(e) self.excel.write_data(row=row, column=8, value="未通过") raise e else: # 结果回写excel中 log.info("用例--{}--执行通过".format(case["title"])) self.excel.write_data(row=row, column=8, value="通过")
def test_audit(self, case): # 第一步:准备数据:获取管理员token admin_phone = conf.get("test_data", "phone") admin_pwd = conf.get("test_data", "pwd") admin_member_id, admin_token = HandleSetup.handle_setup(admin_phone, admin_pwd) # 2:获取普通用户id和token phone = conf.get("test_data", "phone") pwd = conf.get("test_data", "pwd") member_id, token = HandleSetup.handle_setup(phone, pwd) #每次添加一个新项目 url = conf.get("env", "url") + "/loan/add" headers = eval(conf.get("env", "headers")) headers["Authorization"] = token data = {"member_id": member_id, "title": "木森借钱造大炮", "amount": 2000, "loan_rate": 12.0, "loan_term": 3, "loan_date_type": 1, "bidding_days": 5} # 发送请求,添加项目 response = request(method="post", url=url, json=data, headers=headers) res = response.json() # 提取项目的id给审核的用例使用 loan_id = jsonpath.jsonpath(res, "$..id")[0] url = conf.get("env", "url") + case["url"] data = eval(case["data"].replace("#loan_id#", str(loan_id))) headers = eval(conf.get("env", "headers")) headers["Authorization"] = admin_token method = case["method"] expected = eval(case["expected"]) row = case["case_id"] + 1 # 第二步:调用接口,获取实际结果 response = request(url=url, method=method, json=data, headers=headers) res = response.json() # 第三步:断言 try: self.assertEqual(expected["code"], res["code"]) self.assertEqual(expected["msg"], res["msg"]) except AssertionError as e: # 结果回写excel中 log.error("用例--{}--执行未通过".format(case["title"])) log.debug("预期结果:{}".format(expected)) log.debug("实际结果:{}".format(res)) log.exception(e) self.excel.write_data(row=row, column=8, value="未通过") raise e else: # 结果回写excel中 log.info("用例--{}--执行通过".format(case["title"])) self.excel.write_data(row=row, column=8, value="通过")
def test_register(self, case): # 第一步:准备用例数据 # 请求方法 method = case["method"] # 请求地址 url = conf.get("env", "url") + "/member/register" # 判断是否有手机号需要替换 if "#phone#" in case["data"]: # 随机生成一个手机号码 phone = self.random_phone() # 将参数中的#phone#,替换成随机生成的手机号 case["data"] = case["data"].replace("#phone#", phone) # 请求参数 data = eval(case["data"]) # 请求头 headers = eval(conf.get("env", "headers")) # 预期结果 expected = eval(case["expected"]) # 用例所在行 row = case["case_id"] + 1 # 第二步:发送请求获取实际结果 response = request(method=method, url=url, json=data, headers=headers) # 获取实际结果 res = response.json() print("预期结果:", expected) print("实际结果:", res) # 第三步:断言 try: self.assertEqual(expected["code"], res["code"]) self.assertEqual(expected["msg"], res["msg"]) except AssertionError as e: # 结果回写excel中 log.error("用例--{}--执行未通过".format(case["title"])) log.debug("预期结果:{}".format(expected)) log.debug("实际结果:{}".format(res)) log.exception(e) self.excel.write_data(row=row, column=8, value="未通过") raise e else: # 结果回写excel中 log.info("用例--{}--执行通过".format(case["title"])) self.excel.write_data(row=row, column=8, value="通过")
def test_login(self, case): method = case["method"] url = conf.get("env", "url") + case["url"] data = eval(case["data"]) expected = eval(case["expected"]) row = case["case_id"] + 1 res = (request(method, url, json=data)).json() try: assert_dict(expected, res) except AssertionError as e: # 结果回写excel中 log.error("用例--{}--执行未通过".format(case["title"])) log.debug("预期结果:{}".format(expected)) log.debug("实际结果:{}".format(res)) log.exception(e) self.excel.write_data(row=row, column=8, value="未通过") raise e else: # 结果回写excel中 log.info("用例--{}--执行通过".format(case["title"])) self.excel.write_data(row=row, column=8, value="通过")
def test_invest(self, case): """投资用例""" # 第一步:准备数据 url = conf.get("env", "url") + case["url"] method = case["method"] headers = eval(conf.get("env", "headers")) if case["interface"] != "login": # 如果不是登陆接口,添加一个token headers["Authorization"] = getattr(HandleSetup, "token") data = eval(replace_data(case["data"])) expected = eval(case["expected"]) row = case["case_id"] + 1 response = request(url, method, json=data, headers=headers) res = response.json() if case["interface"] == "login": # 如果是登陆接口,提取id和token member_id = str(jsonpath.jsonpath(res, "$..id")[0]) token = "Bearer" + " " + jsonpath.jsonpath(res, "$..token")[0] setattr(HandleSetup, "member_id", member_id) setattr(HandleSetup, "token", token) if case["interface"] == "add": # 如果是加标接口,提取id进行保存 loan_id = str(jsonpath.jsonpath(res, "$..id")[0]) setattr(HandleSetup, "loan_id", loan_id) # 断言 try: self.assertEqual(expected["code"], res["code"]) self.assertEqual(expected["msg"], res["meg"]) except AssertionError as e: # 结果回写excel中 log.error("用例--{}--执行未通过".format(case["title"])) log.debug("预期结果:{}".format(expected)) log.debug("实际结果:{}".format(res)) log.exception(e) self.excel.write_data(row=row, column=8, value="未通过") raise e else: # 结果回写excel中 log.info("用例--{}--执行通过".format(case["title"])) self.excel.write_data(row=row, column=8, value="通过")
def test_add(self, case): # 准备用例数据 url = case["url"] method = case["method"] headers = {"X-Lemonban-Media-Type": "lemonban.v1"} response = request(url=url, method=method, json=data, headers=headers) res = response.json() row = case["case_id"] + 1 expected = eval(case["expected"]) try: self.assertEqual(expected["code"], res["code"]) self.assertEqual(expected["msg"], res["msg"]) except AssertionError as e: # 结果回写excel中 log.error("用例--{}--执行未通过".format(case["title"])) log.debug("预期结果:{}".format(expected)) log.debug("实际结果:{}".format(res)) log.exception(e) self.excel.write_data(row=row, column=8, value="未通过") raise e else: # 结果回写excel中 log.info("用例--{}--执行通过".format(case["title"])) self.excel.write_data(row=row, column=8, value="通过")