def test_business_flow_api(self, case):
        logger.info("#################开始执行业务流接口#######################")
        # 替换
        case = replace_case_with_re(case)

        # 请求
        # 判断是否要添加token
        if hasattr(Data, "token"):
            resp = self.hr.send_requests(case["method"], case["url"], case["request_data"], token=getattr(Data, "token"))
        else:
            resp = self.hr.send_requests(case["method"], case["url"], case["request_data"])

        # 如果有提取字段,从响应消息中提取对应字段,赋值给Data属性
        if case["extract"]:
            set_dataclass_attr_from_resp(resp.json(), case["extract"])

        # 如果有预期结果,则将实际结果与预期结果进行比较
        if case["expected"]:
            actual = resp.json()
            logger.info("用例执行实际结果:{}".format(actual))
            expected = eval(case["expected"])
            logger.info("用例预期结果:{}".format(expected))
            # 断言
            try:

                assert actual["code"] == expected["code"]
                assert actual["msg"] == expected["msg"]
            except AssertionError:
                logger.exception("断言失败!")
                raise
            except Exception:
                logger.exception("除断言以外的报错!")
                raise
Exemple #2
0
    def testLogin(self, case):
        logger.info("*****************开始执行登录接口用例**************************")
        # 替换需要替换的未注册的手机号
        case = replace_case_with_re(case)
        # 替换需要替换的--系统中已存在的手机号--从配置文件读取
        if case["request_data"].find("*phone*") != -1:
            phone = conf.get("user", "user")
            case["request_data"] = case["request_data"].replace(
                "*phone*", phone)
            # 替换需要替换的--系统中已存在的手机号--从配置文件读取
        if case["request_data"].find("*pwd*") != -1:
            pwd = conf.get("user", "pwd")
            case["request_data"] = case["request_data"].replace("*pwd*", pwd)

        logger.info("当前测试用例为:\n {}".format(case))
        # 发起请求
        res = self.hr.send_requests(case["method"], case["url"],
                                    case["request_data"])

        if case["expected"]:
            try:
                # 实际结果
                actual = res.json()
                logger.info("实际结果为:{}".format(actual))
                expected = eval(case["expected"])
                logger.info("预期结果为:{}".format(case["expected"]))
                assert actual["code"] == expected["code"]
                assert actual["msg"] == expected["msg"]
            except AssertionError:
                logger.exception("断言失败")
                raise
            except Exception:
                logger.exception("除断言以外的报错")
                raise
    def testRecharge(self, case):
        logger.info("*****************开始执行充值接口用例**************************")
        # 替换
        case = replace_case_with_re(case)

        logger.info("当前测试用例为:\n {}".format(case))
        # 发起请求
        # 判断是否要传递token值
        if hasattr(Data, "token"):
            res = self.hr.send_requests(case["method"],
                                        case["url"],
                                        case["request_data"],
                                        token=getattr(Data, "token"))
        else:
            res = self.hr.send_requests(case["method"], case["url"],
                                        case["request_data"])

        # 如果有提取字段,那么需要从响应中提取对应数据,设置为Data.token
        if case["extract"]:
            set_dataclass_attr_from_resp(res.json(), case["extract"])

        # 如果有预期结果,需要把响应结果与预期结果进行比较
        if case["expected"]:
            # 响应结果
            actual = res.json()
            logger.info("用例实际执行结果:\n {}".format(actual))
            expected = eval(case["expected"])
            logger.info("用例预期结果:\n {}".format(expected))

            # 断言
            try:
                assert actual["code"] == expected["code"]
                assert actual["msg"] == expected["msg"]
                if actual["data"]['leave_amount']:
                    assert actual["data"]['leave_amount'] == float(
                        getattr(Data, "money"))
            except AssertionError:
                logger.exception("断言失败!")
                raise  # 把异常抛给unittest框架
            except Exception:
                logger.exception("除断言以外的异常报错!")
                raise

        # 如果有数据库校验,则进行数据库校验
        if case["check_sql"]:
            ha = HandleAssert()
            ha.assert_sql(case["check_sql"])
    def test_register(self, case):
        logger.info(
            "*************************** 开始执行注册接口测试用例 ***************************"
        )
        # 替换手机号
        case = replace_case_with_re(case)
        # 替换需要替换的--系统中已存在的手机号--从配置文件读取
        if case["request_data"].find("*phone*") != -1:
            phone = conf.get("user", "user")
            case["request_data"] = case["request_data"].replace(
                "*phone*", phone)
            # 替换需要替换的--系统中已存在的手机号--从配置文件读取
        if case["request_data"].find("*pwd*") != -1:
            pwd = conf.get("user", "pwd")
            case["request_data"] = case["request_data"].replace("*pwd*", pwd)

        # 发起请求
        resp = self.hr.send_requests(case["method"], case["url"],
                                     case["request_data"])
        logger.info("当前测试用例为:\n {}".format(case))
        if case["expected"]:
            # 响应结果
            actual = resp.json()
            logger.info("用例实际执行结果:\n {}".format(actual))
            expected = eval(case["expected"])
            logger.info("用例预期结果:\n {}".format(expected))

            # 断言
            try:
                assert actual["code"] == expected["code"]
                assert actual["msg"] == expected["msg"]
            except AssertionError:
                logger.exception("断言失败!")
                raise  # 把异常抛给unittest框架
            except Exception:
                logger.exception("除断言以外的异常报错!")
                raise

        if case["check_sql"]:
            sleep(0.5)  # 等待服务器数据与数据库交互完成
            ha = HandleAssert()
            ha.assert_sql(case["check_sql"])
    def test_add_bid_api(self, case):
        logger.info(
            "########################开始执行添加项目接口#########################")
        # 替换
        case = replace_case_with_re(case)

        logger.info("当前执行用例为:\n {}".format(case))
        # 请求
        # 判断是否需要传递token
        if hasattr(Data, "token"):
            resp = self.hr.send_requests(case["method"],
                                         case["url"],
                                         case["request_data"],
                                         token=getattr(Data, "token"))
        else:
            resp = self.hr.send_requests(case["method"], case["url"],
                                         case["request_data"])

        # 提取需要的变量
        if case["extract"]:
            set_dataclass_attr_from_resp(resp.json(), case["extract"])

        # 如果有预期结果则用实际结果与预期结果进行比较
        if case["expected"]:
            actual = resp.json()
            logger.info("用例执行结果为: {}".format(actual))
            expected = eval(case["expected"])
            logger.info("用例预期结果为:{}".format(expected))
            try:
                assert actual["code"] == expected["code"]
                if expected.get("msg"):
                    assert actual["msg"] == expected["msg"]
            except AssertionError:
                logger.exception("断言失败!")
                raise AssertionError
            except:
                logger.exception("断言以外的报错!")
                raise