Ejemplo n.º 1
0
    def test_register(self, item):
        logger.info(f"正在执行{item.api}接口的第{item.case_id}条测试用例--{item.title}")

        new_method = item.method

        new_url = do_read_yaml.read_config("requests", "url") + item.url

        new_data = eval(do_handle_params.handle_params(item.data))

        if item.title == "缺少必要的请求头":  # 为测试用例缺少必要的请求头准备
            headers = None
        else:
            headers = do_read_yaml.read_config("requests", "headers")

        result = self.do_requests.http_requests(method=new_method,
                                                url=new_url,
                                                data=new_data,
                                                headers=headers)

        row = item.case_id + 1
        column = do_excel.get_title().index(
            do_read_yaml.read_config("excel", "result_column")) + 1
        actul_column = do_excel.get_title().index(
            do_read_yaml.read_config("excel", "actul_column")) + 1

        pass_value = do_read_yaml.read_config("excel", "pass_value")
        fail_value = do_read_yaml.read_config("excel", "fail_value")

        try:
            self.assertEqual(
                eval(item.expected)["code"],
                result.json()["code"])
        except AssertionError as e:
            logger.error(
                f"正在执行{item.api}接口的第{item.case_id}条测试用例--{item.title}执行失败,异常为{e}"
            )
            do_excel.write_data(row, column, fail_value)
            raise e
        else:
            logger.info(f"测试用例执行成功--{item.title}")
            do_excel.write_data(row, column, pass_value)
        finally:
            # 写入测试实际结果
            do_excel.write_data(row, actul_column, result.text)

            # 设置单元格背景颜色
            do_excel.write_color()
Ejemplo n.º 2
0
    def test_add(self, item):

        global token  # 声明全局变量

        logger.info(f"正在执行{item.api}接口的第{item.case_id}条测试用例--{item.title}")

        # 最终的url地址
        new_url = do_read_yaml.read_config("requests", "url") + item.url

        # 经过转化的最终数据
        new_data = do_handle_params.handle_params(item.data)

        # 添加请求头
        if item.title == "缺少必要的请求头":  # 为测试用例缺少必要的请求头准备
            headers = None
        else:
            headers = do_read_yaml.read_config("requests", "headers")

        # 请求头中添加token
        headers.update(token)

        if " 充值成功" in item.title:
            # 获取充值前金额:
            self.before_value = float(
                do_mysql.read_mysql(do_read_yaml.read_config("mysql", "recharge_sql"), phone=item.data["mobile_phone"])[
                    "leave_amount"])
            do_mysql.close()

        # 发起请求
        result = self.do_requests.http_requests(method=item.method, url=new_url, data=new_data, headers=headers)

        if " 充值成功" in item.title:
            # 获取充值后金额:
            after_value = float(
                do_mysql.read_mysql(do_read_yaml.read_config("mysql", "recharge_sql"), phone=item.data["mobile_phone"])[
                    "leave_amount"])
            try:
                self.assertEqual(eval(item.data)["amount"], float(after_value) - float(self.before_value))
            except AssertionError as e:
                logger.error(f"充值后,数据库中数据异常!{e}")
                raise e
            do_mysql.close()

        row = item.case_id + 1
        column = do_excel.get_title().index(do_read_yaml.read_config("excel", "result_column")) + 1
        actul_column = do_excel.get_title().index(do_read_yaml.read_config("excel", "actul_column")) + 1

        pass_value = do_read_yaml.read_config("excel", "pass_value")
        fail_value = do_read_yaml.read_config("excel", "fail_value")

        try:
            self.assertEqual(eval(item.expected)["code"], result.json()["code"])
            self.assertEqual(eval(item.expected)["msg"], result.json()["msg"])
        except AssertionError as e:
            logger.error(f"正在执行{item.api}接口的第{item.case_id}条测试用例--{item.title}执行失败,异常为{e}")
            do_excel.write_data(row, column, fail_value)
            raise e
        else:
            logger.info(f"测试用例执行成功--{item.title}")
            do_excel.write_data(row, column, pass_value)

        finally:
            do_excel.write_data(row, actul_column, result.text)
            do_excel.write_color()

        # 如果是正常登录用例,则更新到全局变量token中
        if "正常登录" in item.title:
            token["Authorization"] = "Bearer " + result.json()["data"]["token_info"]["token"]