def test_register(self, item): case_id = item["case_id"] title = item["title"] url = cf.get_value(conf_env, "prefix_url") + item["url"] method = item["method"] expected = item["expected"] data = item["data"] new_data = Context.register_parameterization(data) # 将数据中进行参数替换 msg = "测试" + title success_msg = cf.get_value("case", "success") fail_msg = cf.get_value("case", "fail") ret = self.request.send_request(method, url, new_data) try: self.assertEqual(ret.text, expected, msg) do_excel.write_value(case_id + 1, cf.get_int("case", "actual_col"), ret.text) do_excel.write_value(case_id + 1, cf.get_int("case", "result_col"), success_msg) logger.debug("{}, 执行结果为:{}".format(msg, success_msg)) except AssertionError as e: do_excel.write_value(case_id + 1, cf.get_int("case", "actual_col"), ret.text) do_excel.write_value(case_id + 1, cf.get_int("case", "result_col"), fail_msg) logger.error("{}, 执行结果为:{}, 异常结果为:{}".format(msg, fail_msg, e)) raise e
def test_recharge(self, item): case_id = item["case_id"] title = item["title"] url = cf.get_value(conf_env, "prefix_url") + item["url"] method = item["method"] expected = item["expected"] data = item["data"] new_data = Context.recharge_parameterization(data) # 将数据中进行参数替换 check_sql = item["check_sql"] if check_sql: new_sql = Context.recharge_parameterization(check_sql) result = self.handler_mysql.select(new_sql) amount_before = float(result["LeaveAmount"]) amount_before = round(amount_before, 2) msg = "测试" + title success_msg = cf.get_value("case", "success") fail_msg = cf.get_value("case", "fail") ret = self.request.send_request(method, url, new_data) try: self.assertIn(str(expected), ret.text, msg) # 校验充值金额 data_dict = json.loads(data) recharge_amount = data_dict.get("amount") if check_sql: result = self.handler_mysql.select(new_sql) amount_after = float(result["LeaveAmount"]) amount_after = round(amount_after, 2) self.assertEqual(round(amount_after - amount_before, 2), recharge_amount, "数据库充值金额校验失败") do_excel.write_value(case_id + 1, cf.get_int("case", "actual_col"), ret.text) do_excel.write_value(case_id + 1, cf.get_int("case", "result_col"), success_msg) logger.debug("{}, 执行结果为:{}".format(msg, success_msg)) except AssertionError as e: do_excel.write_value(case_id + 1, cf.get_int("case", "actual_col"), ret.text) do_excel.write_value(case_id + 1, cf.get_int("case", "result_col"), fail_msg) logger.error("{}, 执行结果为:{}, 异常结果为:{}".format(msg, fail_msg, e)) raise e
def test_invest(self, item): case_id = item["case_id"] title = item["title"] url = cf.get_value(conf_env, "prefix_url") + item["url"] method = item["method"] expected = item["expected"] data = item["data"] new_data = Context.invest_parameterization(data) # 将数据中进行参数替换 check_sql = item["check_sql"] if check_sql: new_sql = Context.invest_parameterization(check_sql) result = self.handler_mysql.select(new_sql) loan_id = result.get("id") setattr(Context, "loan_id", loan_id) msg = "测试" + title success_msg = cf.get_value("case", "success") fail_msg = cf.get_value("case", "fail") ret = self.request.send_request(method, url, new_data) try: self.assertIn(str(expected), ret.text, msg) do_excel.write_value(case_id + 1, cf.get_int("case", "actual_col"), ret.text) do_excel.write_value(case_id + 1, cf.get_int("case", "result_col"), success_msg) logger.debug("{}, 执行结果为:{}".format(msg, success_msg)) except AssertionError as e: do_excel.write_value(case_id + 1, cf.get_int("case", "actual_col"), ret.text) do_excel.write_value(case_id + 1, cf.get_int("case", "result_col"), fail_msg) logger.error("{}, 执行结果为:{}, 异常结果为:{}".format(msg, fail_msg, e)) raise e
def tearDownClass(cls) -> None: cls.request.close() logger.debug("\n{:=^40s}".format("结束测试"))
def setUpClass(cls) -> None: cls.request = HandleRequest() logger.debug("\n{:=^40s}".format("开始执行测试"))
import unittest from datetime import datetime from libs.HTMLTestRunnerNew import HTMLTestRunner from scripts.constance import DATAS_DIR, REPORTS_DIR, USER_ACCOUNT_FILE_PATH from scripts.handle_configure import cf from scripts.handle_user import generate_user_config from scripts.handle_log import logger # from datas import test_05_invest # 测试环境 test_env = sys.argv[1] conf_env = f"api_{test_env}" logger.debug(f"当前测试环境是:【{conf_env}】") if not os.path.exists(USER_ACCOUNT_FILE_PATH): generate_user_config() suites = unittest.defaultTestLoader.discover(DATAS_DIR) # loader = unittest.TestLoader() # suites = loader.loadTestsFromModule(test_05_invest) report_name = datetime.strftime(datetime.now(), "%Y%m%d%H%M%S") + "_testReport.html" report_file_path = os.path.join(REPORTS_DIR, report_name)