def test_loans(self, case): url = conf.get("env", "url") + case["url"] data = eval(case["data"]) headers = eval(conf.get("env", "headers")) headers["Authorization"] = self.user_token expected = eval(case["expected"]) row = case["case_id"] + 1 # 发送接口请求 response = requests.get(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_audit(self, case): url = conf.get("env", "url") + case["url"] data = eval(case["data"].replace("#loan_id#", str(self.load_id))) headers = eval(conf.get("env", "headers")) headers["Authorization"] = self.admin_token expected = eval(case["expected"]) row = case["case_id"] + 1 response = requests.patch(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 setUpClass(cls) -> None: # user_id cls.user_member_id, cls.user_token = cls.common.login() # admin_id cls.admin_member_id, cls.admin_token = cls.common.login( conf.get("test_data", "admin_phone"), conf.get("test_data", "admin_pwd"))
def __init__(self): """ 初始化连接池 """ # 建立连接 self.con = pymysql.connect( host=conf.get("mysql", "host"), port=int(conf.get("mysql", "port")), user=conf.get("mysql", "user"), password=conf.get("mysql", "password"), charset="utf8", cursorclass=pymysql.cursors.DictCursor # 声明返回字典类型 ) # 创建一个游标对象 self.cur = self.con.cursor()
def setUp(self) -> None: url = conf.get("env", "url") + "/loan/add" headers = eval(conf.get("env", "headers")) headers["Authorization"] = self.user_token data = { "member_id": self.user_member_id, "title": "我还是个宝宝", "amount": 2000, "loan_rate": 12.0, "loan_term": 3, "loan_date_type": 1, "bidding_days": 5 } response = requests.post(url=url, json=data, headers=headers) res = response.json() self.load_id = common_util.get_json_one(res, "$..id")
def test_register(self, case): headers = eval(conf.get("env", "headers")) url = case["url"] if "#phone#" in case["data"]: phone = self.random_phone() case["data"] = case["data"].replace("#phone#", phone) data = eval(case["data"]) log.debug("注册用例更新手机号码的数据={}".format(data)) expected = eval(case["expected"]) row = case["case_id"] + 1 res_count = 0 # sql影响行数,打印日志使用 response = requests.post(url=url, json=data, headers=headers) response = response.json() print("预期结果:", expected) print("实际结果:", response) try: self.assertEqual(response["code"], expected["code"]) self.assertEqual(response["msg"], expected["msg"]) if case["check_sql"]: sql = case["check_sql"].replace("#phone#", data["mobile_phone"]) res_count = db.find_count(sql) self.assertEqual(1, res_count) except AssertionError as e: log.error("用例-{}-未通过".format(case["title"])) log.error("预期结果-{}".format(case["expected"])) log.error("实际结果-{}".format(response)) log.error("sql影响行数={}".format(res_count)) self.excel_register.write_data(row=row, column=8, value="未通过") raise e else: self.excel_register.write_data(row=row, column=8, value="通过") log.info("用例-{}-通过".format(case["title"]))
def create_logger(): # 创建日志收集器 log = logging.getLogger() log.setLevel(conf.get("log", "level")) # 设置控制台日志 sh = logging.StreamHandler() sh.setLevel(conf.get("log", "sh_level")) log.addHandler(sh) # 设置文件日志 fh = logging.FileHandler(log_path, encoding="utf-8") fh.setLevel(conf.get("log", "fh_level")) log.addHandler(fh) # 设置日志格式 form = logging.Formatter(conf.get("log", "formats")) sh.setFormatter(form) fh.setFormatter(form) return log
def replace_data(data): while re.search("#(.*?)#", data): res = re.search("#(.*?)#", data) key = res.group() item = res.group(1) value = conf.get("chris", item) data = data.replace(key, value) return data
def test_recharge(self, case): url = conf.get("env", "url") + case["url"] case["data"] = case["data"].replace("#member_id#", self.member_id) data = eval(case["data"]) headers = eval(conf.get("env", "headers")) headers["Authorization"] = self.token expected = eval(case["expected"]) row = case["case_id"] + 1 if case["check_sql"]: sql = case["check_sql"].format(self.member_id) start_money = self.db.find_one(sql)["leave_amount"] log.debug("充值之前的金额:{}".format(start_money)) # 发送接口请求 response = requests.post(url=url, json=data, headers=headers) res = response.json() print("预期结果:", expected) print("实际结果:", res) # 获取充值后的金额 if case["check_sql"]: sql = case["check_sql"].format(self.member_id) end_money = self.db.find_one(sql)["leave_amount"] log.debug("充值之后的金额:{}".format(end_money)) # 第三步:断言预期结果和实际结果 try: self.assertEqual(expected["code"], res["code"]) self.assertEqual(expected["msg"], res["msg"]) # 判断是否需要进行sql校验 if case["check_sql"]: # 将充值金额转换为decimal类型(因为数据库中的金额是decimal类型的) recharge_money = decimal.Decimal(str(data["amount"])) self.assertEqual(recharge_money, end_money - start_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 login(self, mobile_phone=conf.get("test_data", "phone"), pwd=conf.get("test_data", "pwd")) -> list: """ 登录 :param username: 用户名 :param password: 密码 :return: 用户ID和token """ url = conf.get("env", "url") + "/member/login" data = { "mobile_phone": mobile_phone, "pwd": pwd } headers = eval(conf.get("env", "headers")) response = requests.post(url=url, json=data, headers=headers) res = response.json() log.debug("res={}".format(res)) member_id = str(common_util.get_json_one(res, "$..id")) token = "Bearer" + " " + common_util.get_json_one(res, "$..token") return member_id, token
def test_update(self, case): url = conf.get("env", "url") + case["url"] print(url) # data = eval(replace_data(case["data"])) data = eval(case["data"].replace("#member_id#", self.member_id)) headers = eval(conf.get("env", "headers")) headers["Authorization"] = self.token expected = eval(case["expected"]) row = case["case_id"] + 1 if case["check_sql"]: sql = case["check_sql"].replace("#member_id#", self.member_id) # reg_name = self.db.find_one(sql) # log.debug("修改之前的name:{}".format(reg_name)) # 发送接口请求 response = requests.patch(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"]) # 判断是否需要进行sql校验 if case["check_sql"]: sql = case["check_sql"].replace("#member_id#", self.member_id) reg_name = self.db.find_one(sql) self.assertEqual(data["reg_name"], reg_name["reg_name"]) 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 = conf.get("env", "url") + case["url"] case["data"] = case["data"].replace("#member_id#", self.member_id) data = eval(case["data"]) headers = eval(conf.get("env", "headers")) headers["Authorization"] = self.token expected = eval(case["expected"]) row = case["case_id"] + 1 if case["check_sql"]: sql = case["check_sql"].replace("#member_id#", self.member_id) start_count = self.db.find_count(sql) response = requests.post(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"]) if case["check_sql"]: # 加标之后 sql = case["check_sql"].replace("#member_id#", self.member_id) end_count = self.db.find_count(sql) self.assertEqual(1, end_count - start_count) 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): headers = eval(conf.get("env", "headers")) url = case["url"] data = eval(case["data"]) expected = eval(case["expected"]) row = case["case_id"] + 1 response = requests.post(url=url, json=data, headers=headers) response = response.json() print("预期结果:", expected) print("实际结果:", response) try: self.assertEqual(response["code"], expected["code"]) self.assertEqual(response["msg"], expected["msg"]) except AssertionError as e: log.error("用例-{}-未通过".format(case["title"])) log.error("预期结果-{}".format(case["expected"])) log.error("实际结果-{}".format(response)) self.excel_login.write_data(row=row, column=8, value="未通过") raise e else: self.excel_login.write_data(row=row, column=8, value="通过") log.info("用例-{}-通过".format(case["title"]))
import logging import os from py27_api_test.utils.my_config import conf from py27_api_test.utils.my_path import LOG_DIR log_path = os.path.join(LOG_DIR, conf.get("log", "filename")) class MyLogging: @staticmethod def create_logger(): # 创建日志收集器 log = logging.getLogger() log.setLevel(conf.get("log", "level")) # 设置控制台日志 sh = logging.StreamHandler() sh.setLevel(conf.get("log", "sh_level")) log.addHandler(sh) # 设置文件日志 fh = logging.FileHandler(log_path, encoding="utf-8") fh.setLevel(conf.get("log", "fh_level")) log.addHandler(fh) # 设置日志格式 form = logging.Formatter(conf.get("log", "formats")) sh.setFormatter(form) fh.setFormatter(form) return log log = MyLogging.create_logger()