Exemple #1
0
 def tearDownClass(cls) -> None:
     logger.info("======  注册模块用例 执行结束  ========")
def send_requests(method, url, data=None, token=None):
    """

    :param method:
    :param url:
    :param data:字典形式的数据。
    :param token:
    :return:
    """
    logger.info("发起一次HTTP请求")
    # 得到请求头
    headers = __handle_header(token)
    # 得到完整的url - 拼接url
    url = __pre_url(url)
    # 请求数据的处理 - 如果是字符串,则转换成字典对象。
    data = __pre_data(data)
    # 将请求数据转换成字典对象。
    logger.info("请求头为:{}".format(headers))
    logger.info("请求方法为:{}".format(method))
    logger.info("请求url为:{}".format(url))
    logger.info("请求数据为:{}".format(data))
    # 根据请求类型,调用请求方法
    method = method.upper()  # 大写处理
    if method == "GET":
        resp = requests.get(url, data, headers=headers)
    else:
        resp = requests.post(url, json=data, headers=headers)
    logger.info("响应状态码为:{}".format(resp.status_code))
    logger.info("响应数据为:{}".format(resp.json()))
    return resp
Exemple #3
0
 def setUpClass(cls) -> None:
     logger.info("======  注册模块用例 开始执行  ========")
     logger.info("待执行用例cases:{}".format(cases))
Exemple #4
0
class TestRecharge(unittest.TestCase):
    @classmethod
    def setUpClass(cls) -> None:
        # 得到登陆的用户名和密码
        user, passwd = get_old_phone()
        # 登陆接口调用。
        resp = send_requests("POST", "member/login", {
            "mobile_phone": user,
            "pwd": passwd
        })
        # cls.member_id = jsonpath(resp.json(),"$..id")[0]
        # cls.token = jsonpath(resp.json(),"$..token")[0]
        setattr(EnvData, "member_id", jsonpath(resp.json(), "$..id")[0])
        setattr(EnvData, "token", jsonpath(resp.json(), "$..token")[0])

    @data(*cases)
    def test_recharge(self, case):
        # 替换的数据
        if case["request_data"].find("#member_id#") != -1:
            case = replace_mark_with_data(case, "#member_id#",
                                          str(EnvData.member_id))

        # 数据库 - 查询当前用户的余额 - 在充值之前
        if case["check_sql"]:
            user_money_before_recharge = db.select_one_data(
                case["check_sql"])["leave_amount"]
            logger.info("充值前的用户余额:{}".format(user_money_before_recharge))
            # 期望的用户余额。 充值之前的余额 + 充值的钱
            recharge_money = json.loads(case["request_data"])["amount"]
            logger.info("充值的金额为:{}".format(recharge_money))
            expected_user_leave_amount = round(
                float(user_money_before_recharge) + recharge_money, 2)
            logger.info("期望的充值之后的金额为:{}".format(expected_user_leave_amount))
            # 更新期望的结果 - 将期望的用户余额更新到期望结果当中。
            case = replace_mark_with_data(case, "#money#",
                                          str(expected_user_leave_amount))

        # 发起请求 - 给用户充值
        response = send_requests(case["method"],
                                 case["url"],
                                 case["request_data"],
                                 token=EnvData.token)

        # 将期望的结果转成字典对象,再去比对
        expected = json.loads(case["expected"])

        # 断言
        try:
            self.assertEqual(response.json()["code"], expected["code"])
            self.assertEqual(response.json()["msg"], expected["msg"])
            if case["check_sql"]:
                self.assertEqual(response.json()["data"]["id"],
                                 expected["data"]["id"])
                self.assertEqual(response.json()["data"]["leave_amount"],
                                 expected["data"]["leave_amount"])
                # 数据库 - 查询当前用户的余额
                user_money_after_recharge = db.select_one_data(
                    case["check_sql"])["leave_amount"]
                logger.info("充值后的用户余额:{}".format(user_money_after_recharge))
                self.assertEqual(
                    "{:.2f}".format(expected["data"]["leave_amount"]),
                    "{:.2f}".format(float(user_money_after_recharge)))
        except:
            logger.exception("断言失败!")
            raise