예제 #1
0
        def checkout():
            print("加入购物车:")
            url = preData["eatojoy_url"] + "/user/cart/add"
            headers = {"token": preData["eatojoy_user_token"]}
            print("请求头:")
            print(headers)
            print("请求地址:" + url)
            data = {
                "product_id": "1",
                "vendor_id": "2",
                "product_num": 1,
                "product_msg": "产品备注"
            }
            print("请求参数:")
            print(decode_str(data))
            ret = requests.post(url, json=data, headers=headers)

            print("返回:")
            print(ret.json())
            print("购物车列表:")
            url = preData["eatojoy_url"] + "/user/cart/list"
            headers = {"token": preData["eatojoy_user_token"]}
            print("请求头:")
            print(headers)
            print("请求地址:" + url)
            data = {"vendor_id": "2", "lon": "114.082846", "lat": "22.4167417"}
            print("请求参数:")
            print(decode_str(data))
            ret = requests.get(url, json=data, headers=headers)
            print(ret.json())
            id = ret.json()["data"]["product_list"][0]["id"]
            product_num = ret.json()["data"]["product_list"][0]["product_num"]
            order_grand_total = ret.json()["data"]["price_total"]

            print("返回:")
            print(ret.json())

            print("下单:")
            url = preData["eatojoy_url"] + "/user/order/checkout"
            headers = {"token": preData["eatojoy_user_token"]}
            print("请求头:")
            print(headers)
            print("请求地址:" + url)
            data = {
                "product_id": id,
                "merchants_id": "2",
                "order_product_counts": product_num,
                "order_grand_total": order_grand_total,
                "take_food_time": preData["eatojoy_take_food_time"],
                "package_fee": 10,
                "coupons_fee": 0
            }
            print("请求参数:")
            print(decode_str(data))
            ret = requests.post(url, json=data, headers=headers)
            print(ret.json())

            preData["eatojoy_order_id"].append(get_value("data", ret.json()))
예제 #2
0
    def VendorLogin(context, *args):
        url = preData["eatojoy_url"] + "/admin/vendor/detail?id={}".format(
            context.key_value["vendor_id"])
        headers = {"eatojoy-admin-api-key": preData["eatojoy_bk_token"]}
        ret = requests.get(url, headers=headers)
        mobile = ret.json()["data"]["mobile"]
        print("商家登录:")
        url = preData["eatojoy_ios_url"] + "/vendor/login"

        password = md5_s(str(mobile))
        print("请求地址:" + url)
        data = {"account": mobile, "password": password, "uuid": "asdasd"}
        print("请求参数:")
        print(decode_str(data))
        ret = requests.post(url, json=data)
        if str(ret.status_code).startswith("2"):
            print("返回:")
            print(ret.json())
            context.key_value.update(
                {"vendor_token": ret.json()["data"]["vendor_token"]})
            context.key_value.update({"vendor_password": password})
            print(context.key_value)
            return True
        else:
            print("商家登录失败")
            print(ret.json())
            return False
예제 #3
0
 def AddType(context, type=''):
     print("创建商品类型:")
     url = preData["eatojoy_url"] + "/admin/food/add_type"
     headers = {"eatojoy-admin-api-key": preData["eatojoy_bk_token"]}
     print("请求头:")
     print(headers)
     print("请求地址:" + url)
     if type == 'book':
         data = {
             "vendor_id": context.key_value["vendor_id"],
             "num": "123",
             "name": "自动化测试商品类型"
         }
     else:
         data = {
             "vendor_id": context.key_value["vendor_id"],
             "num": "123",
             "sale_time": "00:00~23:59",
             "name": "自动化测试商品类型"
         }
     print("请求参数:")
     print(decode_str(data))
     ret = requests.post(url, json=data, headers=headers)
     if str(ret.status_code).startswith("2"):
         print("返回:")
         print(ret.json())
         context.key_value.update(
             {"type_id": ret.json()["data"]["type_id"]})
         print(context.key_value)
         return True
     else:
         print("创建商品类型失败")
         print(ret.json())
         return False
예제 #4
0
 def CreateFood(context, *args):
     print("创建菜品:")
     url = preData["eatojoy_url"] + "/admin/food/create"
     headers = {"eatojoy-admin-api-key": preData["eatojoy_bk_token"]}
     print("请求头:")
     print(headers)
     print("请求地址:" + url)
     food_name = "自动化测试菜名"
     data = {
         "vendor_id":
         context.key_value["vendor_id"],
         "num":
         "123",
         "type":
         context.key_value["type_id"],
         "name":
         food_name,
         "description":
         "自动化测试简介",
         "images":
         preData["eatojoy_pic"],
         "price":
         123,
         "has_package":
         1,
         "limited_stock":
         0,
         "stock":
         0,
         "packages": [{
             "package_name":
             "12",
             "package_type":
             "1",
             "package_tags": [{
                 "tag_name": "123",
                 "tag_price": 100
             }, {
                 "tag_name": "123",
                 "tag_price": 244
             }]
         }]
     }
     print("请求参数:")
     print(decode_str(data))
     ret = requests.post(url, json=data, headers=headers)
     if str(ret.status_code).startswith("2"):
         print("返回:")
         print(ret.json())
         context.key_value.update(
             {"food_id": ret.json()["data"]["food_id"]})
         context.key_value.update({"food_name": food_name})
         print(context.key_value)
         return True
     else:
         print("创建菜品失败")
         print(ret.json())
         return False
예제 #5
0
 def pay(order_id):
     print("支付:")
     url = preData["eatojoy_url"] + "/user/payment/pay"
     headers = {"token": preData["eatojoy_user_token"]}
     print("请求头:")
     print(headers)
     print("请求地址:" + url)
     data = {
         "order_id": order_id,
         "source_id": preData["eatojoy_source_id"]
     }
     print("请求参数:")
     print(decode_str(data))
     ret = requests.post(url, json=data, headers=headers)
     print("返回:")
     timeX = time.clock()
     print(timeX)
     print(ret.json())
예제 #6
0
 def BlockVendor(context, *args):
     print("封禁商家:")
     url = preData["eatojoy_url"] + "/admin/vendor/set_block"
     headers = {"eatojoy-admin-api-key": preData["eatojoy_bk_token"]}
     print("请求头:")
     print(headers)
     print("请求地址:" + url)
     data = {"id": context.key_value["vendor_id"], "on": 1}
     print("请求参数:")
     print(decode_str(data))
     ret = requests.post(url, json=data, headers=headers)
     if str(ret.status_code).startswith("2"):
         print("返回:")
         print(ret.json())
         return True
     else:
         print("封禁商家失败")
         print(ret.json())
         return False
예제 #7
0
 def UserIndex(context, *args):
     print("查看用户信息:")
     url = preData["eatojoy_url"] + "/user/user/index"
     headers = {"token": CsvData(preData["eatojoy_num"])[0]}
     preData["eatojoy_num"] = preData["eatojoy_num"] + 1
     print("请求头:")
     print(headers)
     print("请求地址:" + url)
     data = {}
     print("请求参数:")
     print(decode_str(data))
     ret = requests.get(url, json=data, headers=headers)
     if str(ret.status_code).startswith("2"):
         print("返回:")
         print(ret.json())
         return True
     else:
         print("查看用户信息失败")
         print(ret.json())
         return False
예제 #8
0
 def DeleteFodd(context, *args):
     print("删除菜品:")
     url = preData["eatojoy_url"] + "admin/food/delete"
     headers = {"eatojoy-admin-api-key": preData["eatojoy_bk_token"]}
     print("请求头:")
     print(headers)
     print("请求地址:" + url)
     data = {
         "ids": context.key_value["food_id"],
         "vendor_id": context.key_value["vendor_id"]
     }
     print("请求参数:")
     print(decode_str(data))
     ret = requests.post(url, json=data, headers=headers)
     if str(ret.status_code).startswith("2"):
         print("返回:")
         print(ret.json())
         return True
     else:
         print("删除菜品失败")
         print(ret.json())
         return False
예제 #9
0
 def ProtocolCheck(context, *args):
     print("审核商户合约信息:")
     url = preData["eatojoy_url"] + "/admin/vendor/protocol_check"
     headers = {"eatojoy-admin-api-key": preData["eatojoy_bk_token"]}
     print("请求头:")
     print(headers)
     print("请求地址:" + url)
     data = {
         "id": context.key_value["vendor_id"],
         "result": 1,
         "remark": "自动化审核商户合约信息备注"
     }
     print("请求参数:")
     print(decode_str(data))
     ret = requests.post(url, json=data, headers=headers)
     if str(ret.status_code).startswith("2"):
         print("返回:")
         print(ret.json())
         return True
     else:
         print("审核商户合约信息失败")
         print(ret.json())
         return False
예제 #10
0
    def searchtest(context, *args):
        print("start:")
        url = preData["baidu_url"] + '/post'
        headers = {"context-type": "application/json"}
        params = {'showenv': 1}
        print("请求头:")
        print(headers)
        print("请求地址:" + url)
        preData["baidu_zd_url"] = random_11int()
        preData["eatojoy_phone"] = random_8int()
        params = {"show_env": "1"}
        data = {"employ1": {"idc": "001", "name": "runner"}, "employ2": {"idc": "002", "name": "mile"}}
        print(decode_str(data))
        ret = requests.post(url, json=data, params=params, headers=headers)
        if str(ret.status_code).startswith("2"):
            print("返回:")
            print(ret.json()['data'])
            print(type(ret.json()['data']))

            return True
        else:
            print("创建商家失败")
            print(ret.json())
예제 #11
0
 def VendorOpen(context, *args):
     print("商家开启营业:")
     url = preData["eatojoy_ios_url"] + "/vendor/open"
     headers = {
         "Cookie":
         "vendor_token={0};vendor_id={1}".format(
             context.key_value["vendor_token"],
             context.key_value["vendor_id"])
     }
     print("请求地址:" + url)
     print("请求头参数:")
     print(headers)
     data = {"st": 1}
     print("请求参数:")
     print(decode_str(data))
     ret = requests.post(url, json=data, headers=headers)
     if str(ret.status_code).startswith("2"):
         print("返回:")
         print(ret.json())
         return True
     else:
         print("商家开启营业失败")
         print(ret.json())
         return False
예제 #12
0
def tear_down(context, *args):
    sqlist = []
    try:

        if "EATOJOY" in folder:
            # import the project data before use
            from TestData import eatojoy_data

            if "banner_id" in context.key_value.keys():
                sqlist = []
                banner_id = context.key_value["banner_id"]
                sqlist.extend([
                    {"command": "delete from e_banner where id={0}".format(int(banner_id)), "db": "eatojoy"}
                ]),
                for each in sqlist:
                    exec_sql(each["command"], each["db"])
                    print(str(each) + '执行TearDown成功!')

            if "printing_acticity_id" in context.key_value.keys():
                sqlist = []
                id = context.key_value["e_activity_printing"]
                sqlist.extend([
                    {"command": "delete from e_activity_printing where id={0}".format(int(e_activity_printing)), "db": "eatojoy"}
                ]),
                for each in sqlist:
                    exec_sql(each["command"], each["db"])
                    print(str(each) + '执行TearDown成功!')


            if "feedback_id" in context.key_value.keys():
                sqlist = []
                feedback_id = context.key_value["feedback_id"]
                sqlist.extend([
                    {"command": "delete from e_feedback where id={0}".format(int(feedback_id)), "db": "eatojoy"}
                ]),
                for each in sqlist:
                    exec_sql(each["command"], each["db"])
                    print(str(each) + '执行TearDown成功!')

            if "article_id" in context.key_value.keys():
                sqlist = []
                article_id = context.key_value["article_id"]
                sqlist.extend([
                    {"command": "delete from e_article where id={0}".format(int(article_id)), "db": "eatojoy"}
                ]),
                for each in sqlist:
                    exec_sql(each["command"], each["db"])
                    print(str(each) + '执行TearDown成功!')

            # if "type_id" in context.key_value.keys():
            #     sqlist = []
            #     print(context.key_value.keys())
            #     print(context.key_value)
            #     try:
            #         vendor_id = context.key_value["vendor_id"]
            #     except:
            #         vendor_id = eatojoy_data.preData["vendor_id"]
            #     sqlist.extend([
            #         {"command": "delete from e_food_type where vendor_id={0}".format(int(vendor_id)), "db": "eatojoy"}
            #     ]),
            #     for each in sqlist:
            #         exec_sql(each["command"], each["db"])
            #         print(str(each) + '执行TearDown成功!')
            #
            # if "food_id" in context.key_value.keys():
            #     sqlist = []
            #     # print("删除菜品:")
            #     url = eatojoy_data.preData["eatojoy_url"] + "/admin/food/delete"
            #     headers = {"eatojoy-admin-api-key": eatojoy_data.preData["eatojoy_bk_token"]}
            #     # print("请求头:")
            #     # print(headers)
            #     # print("请求地址:" + url)
            #     try:
            #         vendor_id = context.key_value["vendor_id"]
            #     except:
            #         vendor_id = eatojoy_data.preData["vendor_id"]
            #     data = {
            #         "ids": context.key_value["food_id"],
            #         "vendor_id": vendor_id
            #     }
            #     # print("请求参数:")
            #     # print(decode_str(data))
            #     ret = requests.post(url, json=data, headers=headers)
            #     if str(ret.status_code).startswith("2"):
            #         # print("返回:")
            #         # print(ret.json())
            #         food_id = context.key_value["food_id"]
            #         try:
            #             sqlist.extend([
            #                 {"command": "delete from e_food where id={0}".format(int(food_id)), "db": "eatojoy"},
            #                 {"command": "delete from e_food_package where id={0}".format(int(food_id)), "db": "eatojoy"}
            #             ]),
            #         except:
            #             print('{0}参数为空,不执行SQL'.format('food_id'))
            #         for each in sqlist:
            #             exec_sql(each["command"], each["db"])
            #             print(str(each) + '执行TearDown成功!')
            #     else:
            #         # print("删除菜品失败")
            #         print(ret.json())

            if "vendor_id" in context.key_value.keys():

                sqlist = []
                print("封禁商家:")
                url = eatojoy_data.preData["eatojoy_url"] + "/admin/vendor/set_block"
                headers = {"eatojoy-admin-api-key": eatojoy_data.preData["eatojoy_bk_token"]}
                print("请求头:")
                print(headers)
                print("请求地址:" + url)
                data = {
                    "vendor_id": context.key_value["vendor_id"],
                    "on": 1
                }
                print("请求参数:")
                print(decode_str(data))
                ret = requests.post(url, json=data, headers=headers)
                if str(ret.status_code).startswith("2"):
                    print("返回:")
                    print(ret.json())
                else:
                    print("封禁商家失败")
                    print(ret.json())

                # vendor_id = context.key_value["vendor_id"]
                # sqlist.extend([
                #     {"command": "delete from e_vendor where id={0}".format(int(vendor_id)), "db": "eatojoy"},
                #     {"command": "delete from e_vendor_protocol where vendor_id={0}".format(int(vendor_id)),
                #      "db": "eatojoy"},
                #     {"command": "delete from e_vendor_bank where vendor_id={0}".format(int(vendor_id)),
                #      "db": "eatojoy"}
                # ]),
                # for each in sqlist:
                #     exec_sql(each["command"], each["db"])
                #     print(str(each) + '执行TearDown成功!')

            if "admin_user_id" in context.key_value.keys():
                sqlist = []
                admin_user_id = context.key_value["admin_user_id"]
                sqlist.extend([
                    {"command": "delete from e_admin_users where id={0}".format(int(admin_user_id)), "db": "eatojoy"}
                ]),
                for each in sqlist:
                    exec_sql(each["command"], each["db"])
                    print(str(each) + '执行TearDown成功!')

            # if "after_sales_id" in context.key_value.keys():
            #     sqlist = []
            #     after_sales_id = context.key_value["after_sales_id"]
            #     order_id = context.key_value["order_id"]
            #     sqlist.extend([
            #         {"command": "delete from e_after_sales_order where after_sales_id='{0}'".format(after_sales_id), "db": "eatojoy"},
            #         {"command": "delete from e_aftersales_action_log where order_id={0}".format(int(order_id)),"db": "eatojoy"}
            #     ]),
            #     for each in sqlist:
            #         exec_sql(each["command"], each["db"])
            #         print(str(each) + '执行TearDown成功!')

            # if "order_id" in context.key_value.keys():
            #     order_id = context.key_value["order_id"]
            #     if(int(context.key_value["order_id"]) % 100 < 10):
            #         order_table = "e_order_0" + str(int(context.key_value["order_id"]) % 100)
            #         order_table_detail = "e_order_detail_0" + str(int(context.key_value["order_id"]) % 100)
            #     else:
            #         order_table = "e_order_" + str(int(context.key_value["order_id"]) % 100)
            #         order_table_detail = "e_order_detail_" + str(int(context.key_value["order_id"]) % 100)
            #     sqlist.extend([
            #         {"command": "delete from {0} where order_id={1}".format(str(order_table),int(order_id)), "db": "eatojoy"},
            #         {"command": "delete from {0} where order_id={1}".format(str(order_table_detail), int(order_id)), "db": "eatojoy"}
            #     ]),
            #     for each in sqlist:
            #         exec_sql(each["command"], each["db"])

            if "user_group_id" in context.key_value.keys():
                sqlist = []
                user_group_id = context.key_value["user_group_id"]
                sqlist.extend([
                    {"command": "delete from e_admin_group where id={0}".format(int(user_group_id)), "db": "eatojoy"}
                ]),
                for each in sqlist:
                    exec_sql(each["command"], each["db"])
                    print(str(each) + '执行TearDown成功!')


            if "coupon_activity_id" in context.key_value.keys():
                sqlist = []
                coupon_activity_id = context.key_value["coupon_activity_id"]
                sqlist.extend([
                    {"command": "delete from e_coupon_activity where id={0}".format(int(coupon_activity_id)), "db": "eatojoy"},
                    {"command": "delete from e_promotion_send_coupon_code where send_id={0} and type=2".format(int(coupon_activity_id)),
                     "db": "eatojoy"}
                ]),
                for each in sqlist:
                    exec_sql(each["command"], each["db"])
                    print(str(each) + '执行TearDown成功!')



            if "coupon_id" in context.key_value.keys():
                sqlist = []
                coupon_id = context.key_value["coupon_id"]
                result = []
                sqlist.extend([
                    {"command": "select coupon_code from e_promotion_coupon where id={0}".format(int(coupon_id)), "db": "eatojoy"},
                    {"command": "select coupon_status from e_promotion_coupon where id={0}".format(int(coupon_id)),
                     "db": "eatojoy"}
                ]),
                for each in sqlist:
                    result.append(str(exec_sql(each["command"], each["db"])))
                    print(str(each) + '执行TearDown成功!')

                coupon_code = re.findall('[a-zA-Z0-9]+',result[0])[0]

                coupon_status = re.findall('[a-zA-Z0-9]+', result[1])[0]

                if(coupon_status == 'pending' or coupon_status == 'failure'):
                    sqlist.extend([
                        {"command": "update e_promotion_coupon set is_deleted = 1 where id={0}".format(int(coupon_id)),
                         "db": "eatojoy"}
                    ]),
                    for each in sqlist:
                        result.append(str(exec_sql(each["command"], each["db"])))
                        print(str(each) + '执行TearDown成功!')
                else:
                    # print("停用优惠券券")
                    url = eatojoy_data.preData["eatojoy_url"] + "/admin/coupon/doinvalid"
                    headers = {"eatojoy-admin-api-key": eatojoy_data.preData["eatojoy_bk_token"]}
                    # print("请求头:")
                    # print(headers)
                    # print("请求地址:" + url)
                    data = {
                        "coupon_code": coupon_code
                    }
                    # print("请求参数:")
                    # print(decode_str(data))
                    ret = requests.post(url, json=data, headers=headers)
                    sqlist.extend([
                        {"command": "update e_promotion_coupon set is_deleted = 1 where id={0}".format(int(coupon_id)),
                         "db": "eatojoy"}
                    ]),
                    for each in sqlist:
                        result.append(str(exec_sql(each["command"], each["db"])))
                        print(str(each) + '执行TearDown成功!')
                    if str(ret.status_code).startswith("2"):
                        # print("返回:")
                        # print (ret.json())
                        pass
                    else:
                        print("停用优惠券失败")
                        print(ret.json())


            if "coupon_id_1" in context.key_value.keys():
                sqlist = []
                coupon_id = context.key_value["coupon_id_1"]
                result = []
                sqlist.extend([
                    {"command": "select coupon_code from e_promotion_coupon where id={0}".format(int(coupon_id)), "db": "eatojoy"},
                    {"command": "select coupon_status from e_promotion_coupon where id={0}".format(int(coupon_id)),
                     "db": "eatojoy"}
                ]),
                for each in sqlist:
                    result.append(str(exec_sql(each["command"], each["db"])))
                    print(str(each) + '执行TearDown成功!')

                coupon_code = re.findall('[a-zA-Z0-9]+',result[0])[0]

                coupon_status = re.findall('[a-zA-Z0-9]+', result[1])[0]

                if(coupon_status == 'pending' or coupon_status == 'failure'):
                    sqlist.extend([
                        {"command": "update e_promotion_coupon set is_deleted = 1 where id={0}".format(int(coupon_id)),
                         "db": "eatojoy"}
                    ]),
                    for each in sqlist:
                        result.append(str(exec_sql(each["command"], each["db"])))
                        print(str(each) + '执行TearDown成功!')
                else:
                    # print("停用优惠券券")
                    url = eatojoy_data.preData["eatojoy_url"] + "/admin/coupon/doinvalid"
                    headers = {"eatojoy-admin-api-key": eatojoy_data.preData["eatojoy_bk_token"]}
                    # print("请求头:")
                    # print(headers)
                    # print("请求地址:" + url)
                    data = {
                        "coupon_code": coupon_code
                    }
                    # print("请求参数:")
                    # print(decode_str(data))
                    ret = requests.post(url, json=data, headers=headers)
                    sqlist.extend([
                        {"command": "update e_promotion_coupon set is_deleted = 1 where id={0}".format(int(coupon_id)),
                         "db": "eatojoy"}
                    ]),
                    for each in sqlist:
                        result.append(str(exec_sql(each["command"], each["db"])))
                        print(str(each) + '执行TearDown成功!')
                    if str(ret.status_code).startswith("2"):
                        # print("返回:")
                        # print (ret.json())
                        pass
                    else:
                        print("停用优惠券失败")
                        print(ret.json())


            if "coupon_id_2" in context.key_value.keys():
                sqlist = []
                coupon_id = context.key_value["coupon_id_2"]
                result = []
                sqlist.extend([
                    {"command": "select coupon_code from e_promotion_coupon where id={0}".format(int(coupon_id)), "db": "eatojoy"},
                    {"command": "select coupon_status from e_promotion_coupon where id={0}".format(int(coupon_id)),
                     "db": "eatojoy"}
                ]),
                for each in sqlist:
                    result.append(str(exec_sql(each["command"], each["db"])))
                    print(str(each) + '执行TearDown成功!')


                coupon_code = re.findall('[a-zA-Z0-9]+',result[0])[0]

                coupon_status = re.findall('[a-zA-Z0-9]+', result[1])[0]

                sqlist.extend([
                    {"command": "update e_promotion_coupon set is_deleted = 1 where id={0}".format(int(coupon_id)),
                     "db": "eatojoy"}
                ]),
                for each in sqlist:
                    result.append(str(exec_sql(each["command"], each["db"])))
                    print(str(each) + '执行TearDown成功!')
            else:
                # print("停用优惠券券")
                if(coupon_status == 'pending' or coupon_status == 'failure'):

                    url = eatojoy_data.preData["eatojoy_url"] + "/admin/coupon/doinvalid"
                    headers = {"eatojoy-admin-api-key": eatojoy_data.preData["eatojoy_bk_token"]}
                    # print("请求头:")
                    # print(headers)
                    # print("请求地址:" + url)
                    data = {
                        "coupon_code": coupon_code
                    }
                    # print("请求参数:")
                    # print(decode_str(data))
                    ret = requests.post(url, json=data, headers=headers)
                    sqlist.extend([
                        {"command": "update e_promotion_coupon set is_deleted = 1 where id={0}".format(int(coupon_id)),
                         "db": "eatojoy"}
                    ]),
                    for each in sqlist:
                        result.append(str(exec_sql(each["command"], each["db"])))
                        print(str(each) + '执行TearDown成功!')
                    if str(ret.status_code).startswith("2"):
                        # print("返回:")
                        # print (ret.json())
                        pass
                    else:
                        print("停用优惠券失败")
                        print(ret.json())


        elif "ALL_APP_HOTEL" in folder:
            from TestData import hotel_data

            if "order_id" in context.key_value.keys():
                print("取消预定订单:")
                url = hotel_data.preData["hotel_url"] + "/order/cancel"
                if context.key_value["token"] != '':
                    headers = {"token": context.key_value["token"],
                               "client":"IOS",

                               }
                else:
                    headers = {"token": hotel_data.preData["hotel_token"],
                               "client": "IOS",

                               }
                print("请求头:")
                print(headers)
                print("请求地址:" + url)
                data = {
                    "order_sn": context.key_value["order_id"]
                }
                print("请求参数:")
                print(decode_str(data))
                ret = requests.get(url, json=data, headers=headers)
                if str(ret.status_code).startswith("2"):
                    print("返回:")
                    print(ret.json())
                    if ret.json()["status"] == False:
                        print("获取退订订单详情:")
                        url = hotel_data.preData["hotel_url"] + "/order/getUnsubscribe"
                        if context.key_value["token"] != '':
                            headers = {"token": context.key_value["token"],
                                       "client": "IOS",
                                       }
                        else:
                            headers = {"token": hotel_data.preData["hotel_token"],
                                       "client": "IOS",
                                       }
                        print("请求头:")
                        print(headers)
                        print("请求地址:" + url)
                        data = {
                            "order_sn": context.key_value["order_id"]
                        }
                        print("请求参数:")
                        print(decode_str(data))
                        ret = requests.get(url, json=data, headers=headers)

                        print("返回:")
                        print(ret.json())

                        room_id = ret.json()["data"]["roomInfo"][0]['list'][0]["roomId"]

                        print("退订订单:")
                        url = hotel_data.preData["hotel_url"] + "/order/unsubscribe"
                        if context.key_value["token"] != '':
                            headers = {"token": context.key_value["token"],
                                       "client": "IOS",
                                       }
                        else:
                            headers = {"token": hotel_data.preData["hotel_token"],
                                       "client": "IOS",
                                       }
                        print("请求头:")
                        print(headers)
                        print("请求地址:" + url)
                        data = {
                            "order_sn": context.key_value["order_id"],
                            "rooms":room_id,
                            "reasonType":"1"
                        }
                        print("请求参数:")
                        ret = requests.post(url, json=data, headers=headers)

                        print("返回:")
                        print(ret.json())



                else:
                    print("取消预定订单失败")
                    print(ret.json())



            # if "floor_id" in context.key_value.keys():
            #
            #     sqlist = []
            #     floor_id = context.key_value["floor_id"]
            #     sqlist.extend([
            #         {"command": "DELETE from floor where id = {0}".format(floor_id),
            #          "db": "hotel"}
            #     ]),
            #     for each in sqlist:
            #         exec_sql(each["command"], each["db"])
            #         print(str(each) + '执行TearDown成功!')
            #
            #
            # if "roomtype_id" in context.key_value.keys():
            #
            #     sqlist = []
            #     roomtype_id = context.key_value["roomtype_id"]
            #     sqlist.extend([
            #         {"command": "DELETE from room_type where id = {0}".format(roomtype_id),
            #          "db": "hotel"}
            #     ]),
            #     for each in sqlist:
            #         exec_sql(each["command"], each["db"])
            #         print(str(each) + '执行TearDown成功!')
            #
            #
            #
            #
            # if "hotel_id" in context.key_value.keys():
            #
            #     sqlist = []
            #     hotel_id = context.key_value["hotel_id"]
            #     sqlist.extend([
            #         {"command": "DELETE from hotel where id = {0}".format(hotel_id),
            #          "db": "hotel"}
            #     ]),
            #     for each in sqlist:
            #         exec_sql(each["command"], each["db"])
            #         print(str(each) + '执行TearDown成功!')





    except Exception as e:
        print(e)
        traceback.print_exc()
        print(sqlist)
예제 #13
0
    def Android_QuickCheckout(context, *args):
        if ('ALL' in config.folder):
            url = preData["eatojoy_android_url"] + "/user/vendor/detail"
            headers = {"token": preData["eatojoy_user_token"]}
            data = {"id": preData["vendor_id"]}
            ret = requests.get(url, json=data, headers=headers)
            order_product_counts = ret.json()["data"]["total_amount"]
            print("下立刻取餐的订单:")
            url = preData["eatojoy_android_url"] + "/user/order/checkout"
            print("请求头:")
            print(headers)
            print("请求地址:" + url)
            stf_time = time.time()
            time_end = stf_time + 6
            x = time.localtime(time_end)
            take_food_time = time.strftime('%Y-%m-%d %H:%M:%S', x)
            data = {
                "product_id": preData["food_id"],
                "merchants_id": preData["vendor_id"],
                "order_product_counts": order_product_counts,
                "order_grand_total": context.key_value["order_grand_total"],
                "take_food_time": take_food_time,
                "package_fee": 10,
                "coupons_fee": 0,
                "order_msg": "订单描述"
            }
            print("请求参数:")
            print(decode_str(data))
            ret = requests.post(url, json=data, headers=headers)
            print("返回:")
            print(ret.json())
            if str(ret.status_code).startswith("2"):
                context.key_value.update({"order_id": ret.json()["data"]})
                call_back = "https://eatojoy-app.hktester.com/orderDetail?backType=02&orderId=" + context.key_value[
                    "order_id"]

                print("提交支付申请:")
                url = preData["eatojoy_url"] + "/user/payment/web"
                headers = {"token": preData["eatojoy_user_token"]}
                print("请求头:")
                print(headers)
                print("请求地址:" + url)

                data = {
                    "order_id": context.key_value["order_id"],
                    "call_back": call_back
                }
                print("请求参数:")
                print(decode_str(data))
                ret = requests.post(url, json=data, headers=headers)
                print("返回:")
                print(ret.json())
                if str(ret.status_code).startswith("2"):

                    transactionId = str(ret.json()['data']['transactionId'])

                    print("支付:")
                    url = "https://eatojoy-api.hktester.com/api/payment/notification/wezero"
                    headers = {
                        "token": preData["eatojoy_user_token"],
                        "is-test": "yes"
                    }
                    print("请求头:")
                    print(headers)
                    print("请求地址:" + url)

                    data = {
                        "tranId": transactionId,
                        "issueAt": str(int(time.time())),
                        "merchantTranId": context.key_value["order_id"],
                        "amount": context.key_value["order_grand_total"],
                        "success": True,
                        "from": "hk01"
                    }
                    print("请求参数:")
                    print(decode_str(data))
                    ret = requests.post(url, json=data, headers=headers)
                    print("返回:")
                    print(ret.json())
                    if str(ret.status_code).startswith("2"):
                        print("支付成功")
                        return True
                    else:
                        print("支付失败")
                        return False

                else:
                    print("提交支付失败")
                    return False
            else:
                print("下立刻取餐的订单失败")
                return False
        else:
            print("下立刻取餐的订单:")
            url = preData["eatojoy_android_url"] + "/user/order/checkout"
            headers = {"token": preData["eatojoy_user_token"]}
            print("请求头:")
            print(headers)
            print("请求地址:" + url)
            stf_time = time.time()
            time_end = stf_time + 6
            x = time.localtime(time_end)
            take_food_time = time.strftime('%Y-%m-%d %H:%M:%S', x)
            data = {
                "product_id": context.key_value["food_id"],
                "merchants_id": context.key_value["vendor_id"],
                "order_product_counts": context.key_value["product_num"],
                "order_grand_total": context.key_value["order_grand_total"],
                "take_food_time": take_food_time,
                "package_fee": 10,
                "coupons_fee": 0
            }
            print("请求参数:")
            print(decode_str(data))
            ret = requests.post(url, json=data, headers=headers)
            print("返回:")
            print(ret.json())
            if str(ret.status_code).startswith("2"):
                context.key_value.update({"order_id": ret.json()["data"]})
                call_back = "https://eatojoy-app.hktester.com/orderDetail?backType=02&orderId=" + context.key_value[
                    "order_id"]

                print("提交支付申请:")
                url = preData["eatojoy_url"] + "/user/payment/web"
                headers = {"token": preData["eatojoy_user_token"]}
                print("请求头:")
                print(headers)
                print("请求地址:" + url)

                data = {
                    "order_id": context.key_value["order_id"],
                    "call_back": call_back
                }
                print("请求参数:")
                print(decode_str(data))
                ret = requests.post(url, json=data, headers=headers)
                print("返回:")
                print(ret.json())
                if str(ret.status_code).startswith("2"):

                    transactionId = str(ret.json()['data']['transactionId'])

                    print("支付:")
                    url = "https://eatojoy-api.hktester.com/api/payment/notification/wezero"
                    headers = {
                        "token": preData["eatojoy_user_token"],
                        "is-test": "yes"
                    }
                    print("请求头:")
                    print(headers)
                    print("请求地址:" + url)

                    data = {
                        "tranId": transactionId,
                        "issueAt": str(int(time.time())),
                        "merchantTranId": context.key_value["order_id"],
                        "amount": context.key_value["order_grand_total"],
                        "success": True,
                        "from": "hk01"
                    }
                    print("请求参数:")
                    print(decode_str(data))
                    ret = requests.post(url, json=data, headers=headers)
                    print("返回:")
                    print(ret.json())
                    if str(ret.status_code).startswith("2"):
                        print("支付成功")
                        return True
                    else:
                        print("支付失败")
                        return False

                else:
                    print("提交支付失败")
                    return False
            else:
                print("下立刻取餐的订单失败")
                return False
예제 #14
0
    def CouponCheckout(context, *args):
        if ('ALL' in config.folder):
            url = preData["eatojoy_url"] + "/user/vendor/detail"
            headers = {"token": preData["eatojoy_user_token"]}
            try:
                vendor_id = context.key_value["vendor_id"]
                food_id = context.key_value["food_id"]
            except:
                vendor_id = preData["vendor_id"]
                food_id = preData["food_id"]
            data = {"id": vendor_id}
            ret = requests.get(url, json=data, headers=headers)
            print(ret.json())
            order_product_counts = ret.json()["data"]["total_amount"]
            print("下使用了优惠券的订单:")
            url = preData["eatojoy_url"] + "/user/order/checkout"
            headers = {"token": preData["eatojoy_user_token"]}
            print("请求头:")
            print(headers)
            print("请求地址:" + url)
            stf_time = time.time()
            time_end = stf_time + 6
            x = time.localtime(time_end)
            take_food_time = time.strftime('%Y-%m-%d %H:%M:%S', x)
            if context.key_value["coupon_type"] == '1':
                order_grand_total = float(
                    context.key_value["order_grand_total"]) - float(
                        context.key_value["coupon_type_value"])
                coupons_fee = context.key_value["coupon_type_value"]
            else:
                coupons_fee = (
                    1.0 - float(context.key_value["coupon_type_value"]) /
                    10.0) * float(context.key_value["order_grand_total"])
                order_grand_total = float(
                    context.key_value["coupon_type_value"]) / 10.0 * float(
                        context.key_value["order_grand_total"])

            data = {
                "product_id": food_id,
                "merchants_id": vendor_id,
                "order_product_counts": order_product_counts,
                "order_grand_total": order_grand_total,
                "take_food_time": take_food_time,
                "package_fee": 10,
                "coupons_fee": coupons_fee,
                "coupon_user_code": context.key_value["coupon_user_code"]
            }
            print("请求参数:")
            print(decode_str(data))
            ret = requests.post(url, json=data, headers=headers)
            if str(ret.status_code).startswith("2"):
                print("返回:")
                print(ret.json())
                context.key_value.update({"order_id": ret.json()["data"]})
                return True
            else:
                print("下使用了优惠券的订单失败")
                print(ret.json())
                return False
        else:
            print("下使用了优惠券的订单:")
            url = preData["eatojoy_url"] + "/user/order/checkout"
            headers = {"token": preData["eatojoy_user_token"]}
            print("请求头:")
            print(headers)
            print("请求地址:" + url)
            stf_time = time.time()
            time_end = stf_time + 6
            x = time.localtime(time_end)
            take_food_time = time.strftime('%Y-%m-%d %H:%M:%S', x)
            if context.key_value["coupon_type"] == '1':
                order_grand_total = float(
                    context.key_value["order_grand_total"]) - int(
                        float(context.key_value["coupon_type_value"]))
                coupons_fee = context.key_value["coupon_type_value"]
            else:
                coupons_fee = (
                    1.0 - float(context.key_value["coupon_type_value"]) /
                    10.0) * float(context.key_value["order_grand_total"])
                order_grand_total = float(
                    context.key_value["coupon_type_value"]) / 10.0 * float(
                        context.key_value["order_grand_total"])

            data = {
                "product_id": context.key_value["food_id"],
                "merchants_id": context.key_value["vendor_id"],
                "order_product_counts": context.key_value["product_num"],
                "order_grand_total": order_grand_total,
                "take_food_time": take_food_time,
                "package_fee": 10,
                "coupons_fee": coupons_fee,
                "coupon_user_code": context.key_value["coupon_user_code"]
            }
            print("请求参数:")
            print(decode_str(data))
            ret = requests.post(url, json=data, headers=headers)
            if str(ret.status_code).startswith("2"):
                print("返回:")
                print(ret.json())
                if "\"status\":false" in ret.json():
                    return False
                context.key_value.update({"order_id": ret.json()["data"]})
                return True
            else:
                print("下使用了优惠券的订单失败")
                print(ret.json())
                return False
예제 #15
0
def Eatojoy_dataReady(
    eatojoy_url,
    eatojoy_ios_url,
    eatojoy_bk_token,
):
    eatojoy_pic = "/eatojoy/1b9c4b7553d94f038b3178b676b993d6.jpg"
    eatojoy_phone = str(random_8int())
    eatojoy_vendor_name = str(random_8int())

    print("创建商户:")
    url = eatojoy_url + "/admin/vendor/new_vendor"
    headers = {"eatojoy-admin-api-key": eatojoy_bk_token}
    print("请求头:")
    print(headers)
    print("请求地址:" + url)
    data = {
        "name": "自动化测试商家" + eatojoy_vendor_name,
        "description": "自动化测试商家简介",
        "logo": eatojoy_pic,
        "tags": "z001,y001,g001",
        "spend": "40",
        "prepare_time": "0",
        "business_code": "12345678910",
        "district": "0",
        "address": "餐厅详细地址",
        "contact": "自动化",
        "lon": "114.38817",
        "lat": "22.0490721",
        "business_time": "00:00~12:00,12:00~23:59",
        "email": "*****@*****.**",
        "mobile": eatojoy_phone,
        "representative": "hhhh",
        "borrow_device": 1,
        "device_info": "12312",
        "has_cash_pledge": 1,
        "cash_pledge": 1233,
        "bank_num": "123456782",
        "bank_owner": "hhh",
        "bank_type": "hhhh",
        "protocol_file": "/_docment/58625acfaefa1757a6e89b163002d4ab.jpg",
        "protocol_name": "3M以下JPG.jpg",
        "start_time": "2018-04-18",
        "end_time": "2019-05-08",
        "rate": "2",
        "settlement_cycle": "0",
        "vendor_type": 1,
        "remark": "1231231321",
        "status": 1
    }
    print("请求参数:")
    print(decode_str(data))
    ret = requests.post(url, json=data, headers=headers)
    if ret.json()["status"] == True:
        print("返回:")
        print(ret.json())
        vendor_id = ret.json()["data"]["vendor_id"]
    elif ret.json()["status"] == False:
        print("创建商户失败")
        print(ret.json())
        return False

    print("审核商户基本信息:")
    url = eatojoy_url + "/admin/vendor/base_check"
    headers = {"eatojoy-admin-api-key": eatojoy_bk_token}
    print("请求头:")
    print(headers)
    print("请求地址:" + url)
    data = {"id": vendor_id, "result": 1, "remark": "自动化审核商户基本信息备注"}
    print("请求参数:")
    print(decode_str(data))
    ret = requests.post(url, json=data, headers=headers)
    if str(ret.status_code).startswith("2"):
        print("返回:")
        print(ret.json())
    else:
        print("审核商户基本信息失败")
        print(ret.json())
        return False

    print("审核商户合约信息:")
    url = eatojoy_url + "/admin/vendor/bank_check"
    headers = {"eatojoy-admin-api-key": eatojoy_bk_token}
    print("请求头:")
    print(headers)
    print("请求地址:" + url)
    data = {"id": vendor_id, "result": 1, "remark": "自动化审核商户合约信息备注"}
    print("请求参数:")
    print(decode_str(data))
    ret = requests.post(url, json=data, headers=headers)
    if str(ret.status_code).startswith("2"):
        print("返回:")
        print(ret.json())
    else:
        print("审核商户银行信息失败")
        print(ret.json())
        return False

    print("审核商户合约信息:")
    url = eatojoy_url + "/admin/vendor/protocol_check"
    headers = {"eatojoy-admin-api-key": eatojoy_bk_token}
    print("请求头:")
    print(headers)
    print("请求地址:" + url)
    data = {"id": vendor_id, "result": 1, "remark": "自动化审核商户合约信息备注"}
    print("请求参数:")
    print(decode_str(data))
    ret = requests.post(url, json=data, headers=headers)
    if str(ret.status_code).startswith("2"):
        print("返回:")
        print(ret.json())
    else:
        print("审核商户合约信息失败")
        print(ret.json())
        return False

    print("创建商品类型:")
    url = eatojoy_url + "/admin/food/add_type"
    headers = {"eatojoy-admin-api-key": eatojoy_bk_token}
    print("请求头:")
    print(headers)
    print("请求地址:" + url)
    data = {
        "vendor_id": vendor_id,
        "num": "123",
        "sale_time": "00:00~23:59",
        "name": "自动化测试商品类型"
    }
    print("请求参数:")
    print(decode_str(data))
    ret = requests.post(url, json=data, headers=headers)
    if str(ret.status_code).startswith("2"):
        print("返回:")
        print(ret.json())
        type_id = ret.json()["data"]["type_id"]
    else:
        print("创建商品类型失败")
        print(ret.json())
        return False

    print("创建菜品:")
    url = eatojoy_url + "/admin/food/create"
    headers = {"eatojoy-admin-api-key": eatojoy_bk_token}
    print("请求头:")
    print(headers)
    print("请求地址:" + url)
    data = {
        "vendor_id":
        vendor_id,
        "num":
        "123",
        "type":
        type_id,
        "name":
        "自动化测试菜名",
        "description":
        "自动化测试简介",
        "images":
        eatojoy_pic,
        "price":
        1230,
        "has_package":
        1,
        "limited_stock":
        0,
        "stock":
        0,
        "packages": [{
            "package_name":
            "12",
            "package_type":
            "1",
            "package_tags": [{
                "tag_name": "123",
                "tag_price": 100
            }, {
                "tag_name": "123",
                "tag_price": 244
            }]
        }]
    }
    print("请求参数:")
    print(decode_str(data))
    ret = requests.post(url, json=data, headers=headers)
    if str(ret.status_code).startswith("2"):
        print("返回:")
        print(ret.json())
        food_id = ret.json()["data"]["food_id"]
    else:
        print("创建菜品失败")
        print(ret.json())
        return False

    print("商家登录:")
    url = eatojoy_ios_url + "/vendor/login"
    password = md5_s(eatojoy_phone)
    print("请求地址:" + url)
    data = {"account": eatojoy_phone, "password": password, "uuid": "asdasd"}
    print("请求参数:")
    print(decode_str(data))
    ret = requests.post(url, json=data)
    if str(ret.status_code).startswith("2"):
        print("返回:")
        print(ret.json())
        vendor_token = ret.json()["data"]["vendor_token"]
    else:
        print("商家登录失败")
        print(ret.json())
        return False

    print("商家开启营业:")
    url = eatojoy_ios_url + "/vendor/open"
    headers = {
        "Cookie":
        "vendor_token={0};vendor_id={1}".format(vendor_token, vendor_id)
    }
    print("请求头:")
    print(headers)
    print("请求地址:" + url)
    data = {"st": 1}
    print("请求参数:")
    print(decode_str(data))
    ret = requests.post(url, json=data, headers=headers)
    if str(ret.status_code).startswith("2"):
        print("返回:")
        print(ret.json())
    else:
        print("商家开启营业失败")
        print(ret.json())
        return False

    return vendor_id, vendor_token, type_id, food_id
예제 #16
0
    def CreatePreVendor(context, *args):
        print("创建商户基本信息:")
        url = preData["eatojoy_url"] + "/admin/vendor/new_vendor"
        headers = {"eatojoy-admin-api-key": preData["eatojoy_bk_token"]}
        print("请求头:")
        print(headers)
        print("请求地址:" + url)
        preData["eatojoy_vendor_name"] = random_11int()
        preData["eatojoy_phone"] = random_8int()
        data = {
            "name": preData["eatojoy_vendor_name"],
            "description": "预售店01",
            "logo": preData["eatojoy_pic"],
            "tags": "z001,y001,g001",
            "spend": "40",
            "vendor_type": 2,
            "book_time_type": 2,
            "book_time_value": "2",
            "prepare_time": 0,
            "expiry_date_type": "2",
            "expiry_date_value": 1,
            "stocking_time": 0,
            "stocking_time_type": 2,
            "business_code": "12345678910",
            "district": "0",
            "address": "餐厅详细地址",
            "contact": "自动化",
            "lon": "114.38817",
            "lat": "22.0490721",
            "business_time": "00:00~12:00,12:50~23:59",
            "email": "*****@*****.**",
            "mobile": preData["eatojoy_phone"],
            "representative": "hhhh",
            "borrow_device": 1,
            "device_info": "12312",
            "has_cash_pledge": 1,
            "cash_pledge": 1233,
            "status": 0
        }
        print("请求参数:")
        print(decode_str(data))
        ret = requests.post(url, json=data, headers=headers)
        if ret.json()["status"] == True:
            print("返回:")
            print(ret.json())
            eatojoy_vendor_id = ret.json()["data"]["vendor_id"]
            context.key_value.update(
                {"vendor_id": ret.json()["data"]["vendor_id"]})
            print(eatojoy_vendor_id)
        else:
            print(ret.json())
            print("创建商家基本信息失败")

        print("添加商家财务信息:")
        url = preData["eatojoy_url"] + "/admin/vendor/edit_vendor"
        headers = {"eatojoy-admin-api-key": preData["eatojoy_bk_token"]}
        print("请求头:")
        print(headers)
        print("请求地址:" + url)
        data = {
            "bank_num": "123456782",
            "bank_owner": "hhh",
            "bank_type": "hhhh",
            "status": 0,
            "vendor_id": eatojoy_vendor_id
        }
        print("请求参数:")
        print(decode_str(data))
        ret = requests.post(url, json=data, headers=headers)
        if ret.json()["status"] == True:
            print("返回")
            print(ret.json())
            print("创建商家财务信息成功")

        else:
            print(ret.json())
            print("创建商家银信息失败")

        print("添加商家合约信息:")
        url = preData["eatojoy_url"] + "/admin/vendor/edit_vendor"
        headers = {"eatojoy-admin-api-key": preData["eatojoy_bk_token"]}
        print("请求头:")
        print(headers)
        print("请求地址:" + url)

        data = {
            "protocol_file": "/_docment/58625acfaefa1757a6e89b163002d4ab.jpg",
            "protocol_name": "3M以下JPG.jpg",
            "start_time": "2018-04-18",
            "end_time": "2019-05-08",
            "rate": "2",
            "settlement_cycle": "0",
            "remark": "1231231321",
            "status": 1,
            "vendor_id": eatojoy_vendor_id
        }
        print("请求参数:")
        print(decode_str(data))
        ret = requests.post(url, json=data, headers=headers)
        if ret.json()["status"] == True:
            print("返回")
            print(ret.json())
            print("创建商家合约信息成功")

        else:
            print(ret.json())
            print("创建商家合约信息失败")

        print("审核商家基础信息:")
        url = preData["eatojoy_url"] + "/admin/vendor/base_check"
        headers = {"eatojoy-admin-api-key": preData["eatojoy_bk_token"]}
        print("请求头:")
        print(headers)
        print("请求地址:" + url)

        data = {
            "id": eatojoy_vendor_id,
            "result": 1,
            "remark": "自动化商家基础信息审核备注"
        }
        print("请求参数:")
        print(decode_str(data))
        ret = requests.post(url, json=data, headers=headers)
        if ret.json()["status"] == True:
            print("返回")
            print(ret.json())
            print("商家基础信息审核通过")

        else:
            print(ret.json())
            print("商家基础信息审核失败")

        print("审核商家财务信息:")
        url = preData["eatojoy_url"] + "/admin/vendor/bank_check"
        headers = {"eatojoy-admin-api-key": preData["eatojoy_bk_token"]}
        print("请求头:")
        print(headers)
        print("请求地址:" + url)

        data = {
            "id": eatojoy_vendor_id,
            "result": 1,
            "remark": "自动化商家财务信息审核备注"
        }
        print("请求参数:")
        print(decode_str(data))
        ret = requests.post(url, json=data, headers=headers)
        if ret.json()["status"] == True:
            print("返回")
            print(ret.json())
            print("商家财务信息审核通过")

        else:
            print(ret.json())
            print("商家财务信息审核失败")

        print("审核合约财务信息:")
        url = preData["eatojoy_url"] + "/admin/vendor/protocol_check"
        headers = {"eatojoy-admin-api-key": preData["eatojoy_bk_token"]}
        print("请求头:")
        print(headers)
        print("请求地址:" + url)

        data = {
            "id": eatojoy_vendor_id,
            "result": 1,
            "remark": "自动化商家合约信息审核备注"
        }
        print("请求参数:")
        print(decode_str(data))
        ret = requests.post(url, json=data, headers=headers)

        if ret.json()["status"] == True:
            print("返回")
            print(ret.json())
            print("商家合约信息审核通过")
            return True

        else:
            print(ret.json())
            print("商家合约信息审核失败")
예제 #17
0
    def CreateVendor(context, *args):
        print("创建商户:")
        url = preData["eatojoy_url"] + "/admin/vendor/new_vendor"
        headers = {"eatojoy-admin-api-key": preData["eatojoy_bk_token"]}
        print("请求头:")
        print(headers)
        print("请求地址:" + url)
        preData["eatojoy_vendor_name"] = random_11int()
        preData["eatojoy_phone"] = random_8int()
        data = {
            "name": preData["eatojoy_vendor_name"],
            "description": "自动化测试商家简介",
            "logo": preData["eatojoy_pic"],
            "tags": "z001,y001,g001",
            "spend": "40",
            "prepare_time": "0",
            "business_code": "12345678910",
            "district": "0",
            "address": "餐厅详细地址",
            "contact": "自动化",
            "lon": "114.38817",
            "lat": "22.0490721",
            "business_time": "00:00~12:00,12:00~23:59",
            "email": "*****@*****.**",
            "mobile": preData["eatojoy_phone"],
            "representative": "hhhh",
            "borrow_device": 1,
            "device_info": "12312",
            "has_cash_pledge": 1,
            "cash_pledge": 1233,
            "bank_num": "123456782",
            "bank_owner": "hhh",
            "bank_type": "hhhh",
            "protocol_file": "/_docment/be911b9f7f82a8cf5e823712504c0a94.jpg",
            "protocol_name": "3M以下JPG.jpg",
            "start_time": "2018-04-18",
            "end_time": "2019-05-08",
            "rate": "2",
            "settlement_cycle": "0",
            "remark": "1231231321",
            "status": 1,
            "vendor_type": 1
        }
        print("请求参数:")
        print(decode_str(data))
        ret = requests.post(url, json=data, headers=headers)
        if ret.json()["status"] == True:
            print("返回:")
            print(ret.json())
            context.key_value.update(
                {"vendor_id": ret.json()["data"]["vendor_id"]})
            print(context.key_value)
            return True
        elif ret.json()["status"] == False:
            print("创建商家失败")
            print(ret.json())
            # # print ret.tex
            # # print("封禁商家:")
            # url = eatojoy.preData["eatojoy_url"] + "/admin/vendor/set_block"
            # headers = {"eatojoy-admin-api-key": eatojoy.preData["eatojoy_bk_token"]}
            # # print("请求头:")
            # # print(headers)
            # # print("请求地址:" + url)
            # data = {
            #     "id": context.key_value["vendor_id"],
            #     "on": 1
            # }
            # # print("请求参数:")
            # # print(decode_str(data))
            # ret = requests.post(url, json=data, headers=headers)
            # # print("返回:")
            # # print(ret.json())
            sqlist = []
            sqlist.extend([{
                "command":
                "DELETE FROM e_vendor WHERE NAME = \"自动化测试商家test140\"",
                "db": "eatojoy"
            }]),
            for each in sqlist:
                exec_sql(each["command"], each["db"])

        else:
            print("创建商户失败")
            print(ret.json())
            return False
예제 #18
0
def check_data(context, filename):
    """
    最后执行的关键步骤,请求输入,输出检查。
    :param context: 上下文关联存储器
    :param filename: 用例文件绝对路径
    :return:  布尔(True或者False)
    """
    val = template_json(context, filename)
    if type(val) != dict:
        return False
    if "author" in val.keys():
        print("测试用例编写责任人:{0}".format(val["author"]))
    # print(val)
    # 获取接口请求输入数据
    """
         当前测试过程执行时需要创建新的数据
    """
    if "new" in val.keys():
        print("创建新数据函数")
        if isinstance(val["new"], list):
            for i, each in enumerate(val["new"]):
                new_cls = val["new"][i]["class"]
                new_function = val["new"][i]["function"]
                print("当前在{0}文件中,执行{1}函数".format(new_cls, new_function))
                if "arg" in val["new"][i].keys():
                    arg = val["new"][i]["arg"]
                    print("参数为:{}".format(arg))
                    value = exe_module(new_cls, new_function, arg)
                    if not value:
                        return False
                    else:
                        if isinstance(val["new"][i]["key"], list):
                            for j in range(len(val["new"][i]["key"])):
                                if isinstance(value, list):
                                    context.key_value.update(
                                        {val["new"][i]["key"][j]: value[j]})
                                    print("执行返回值为{0}:{1}".format(
                                        val["new"][i]["key"][j], value[j]))
                                else:
                                    context.key_value.update(
                                        {val["new"][i]["key"][j]: value})
                                    print("执行返回值为{0}:{1}".format(
                                        val["new"][i]["key"][i], value))
                        else:
                            context.key_value.update(
                                {val["new"][i]["key"]: value})
                            print("执行返回值为{0}:{1}".format(
                                val["new"][i]["key"], value))
                else:
                    value = exe_module(new_cls, new_function)
                    if not value:
                        return False
                    else:
                        if isinstance(val["new"][i]["key"], list):
                            for j in range(len(val["new"][i]["key"])):
                                if isinstance(value, list):
                                    context.key_value.update(
                                        {val["new"][i]["key"][j]: value[j]})
                                    print("执行返回值为{0}:{1}".format(
                                        val["new"][i]["key"][j], value[j]))
                                else:
                                    context.key_value.update(
                                        {val["new"][i]["key"][j]: value})
                                    print("执行返回值为{0}:{1}".format(
                                        val["new"][i]["key"][j], value))
                        else:
                            context.key_value.update(
                                {val["new"][i]["key"]: value})
                            print("执行返回值为{0}:{1}".format(
                                val["new"][i]["key"], value))
        elif isinstance(val["new"], dict):
            new_cls = val["new"]["class"]
            new_function = val["new"]["function"]
            print("当前在{0}文件中,执行{1}函数".format(new_cls, new_function))
            if "arg" in val["new"].keys():
                arg = val["new"]["arg"]
                print("参数为:{}".format(arg))
                value = exe_module(new_cls, new_function, arg)
                if not value:
                    return False
                else:
                    if isinstance(val["new"]["key"], list):
                        for j in range(len(val["new"]["key"])):
                            if isinstance(value, list):
                                context.key_value.update(
                                    {val["new"]["key"][j]: value[j]})
                                print("执行返回值为{0}:{1}".format(
                                    val["new"]["key"][j], value[j]))
                            else:
                                context.key_value.update(
                                    {val["new"]["key"][j]: value})
                                print("执行返回值为{0}:{1}".format(
                                    val["new"]["key"][j], value))
                    else:
                        context.key_value.update({val["new"]["key"]: value})
                        print("执行返回值为{0}:{1}".format(val["new"]["key"], value))
            else:
                value = exe_module(new_cls, new_function)
                if not value:
                    return False
                else:
                    if isinstance(val["new"]["key"], list):
                        for j in range(len(val["new"]["key"])):
                            if isinstance(value, list):
                                context.key_value.update(
                                    {val["new"]["key"][j]: value[j]})
                                print("执行返回值为{0}:{1}".format(
                                    val["new"]["key"][j], value[j]))
                            else:
                                context.key_value.update(
                                    {val["new"]["key"][j]: value})
                                print("执行返回值为{0}:{1}".format(
                                    val["new"]["key"][j], value))
                    else:
                        context.key_value.update({val["new"]["key"]: value})
                        print("执行返回值为{0}:{1}".format(val["new"]["key"], value))
        val = template_json(context, filename)
    if "public" in val.keys():
        print("调用公共函数执行 \n")
        if isinstance(val["public"], list):
            for i, each in enumerate(val["public"]):
                cls = val["public"][i]["class"]
                function = val["public"][i]["function"]
                if "arg" in val["public"][i].keys():
                    arg = val["public"][i]["arg"]
                    if not exe_module(cls, function, (context, arg)):
                        return False
                else:
                    if not exe_module(cls, function, (context, )):
                        return False
        elif isinstance(val["public"], dict):
            cls = val["public"]["class"]
            function = val["public"]["function"]
            if "arg" in val["public"].keys():
                arg = val["public"]["arg"]
                if not exe_module(cls, function, (context, arg)):
                    return False
            else:
                if not exe_module(cls, function, (context, )):
                    return False
        val = template_json(context, filename)
    """
    SQL 输入检查并对SQL语句处理。
    """
    if "sql" in val.keys():
        print(val["sql"])
        result = None
        if config.method == "MOCK":
            if "mock" in val.keys():
                result = val["mock"]
                print("Mock data: {0}".format(result))
                if "key" in val.keys():
                    for item in val["key"]:
                        context.key_value.update({item: result[item]})
                print(context.key_value)
            return True
        else:
            try:
                if '\'db\'' in str(val):
                    db = val["sql"]["db"]
                else:
                    db = None
                command = val["sql"]["command"]
                if isinstance(command, list):
                    for each in command:
                        result = exec_sql(each, db)
                        # print result
                        # for item in command:
                        if "SELECT" in each or "select" in each:
                            if "key" in val.keys() and isinstance(
                                    val["key"], list):
                                for i, item1 in enumerate(val["key"]):
                                    print(result[0][i])
                                    context.key_value.update(
                                        {item1: result[0][i]})
                            else:
                                context.key_value.update(
                                    {val["key"]: result[-1][-1]})
                else:
                    result = exec_sql(command, db)
                    if "SELECT" in command or "select" in command:
                        if "key" in val.keys() and isinstance(
                                val["key"], list):
                            for i, item1 in enumerate(val["key"]):
                                context.key_value.update({item1: result[0][i]})
                        elif "key" in val.keys():
                            print(result)
                            context.key_value.update(
                                {val["key"]: result[-1][-1]})
                if "input" in val.keys():
                    pass
                else:
                    print(context.key_value)
                    if "output" in val.keys():
                        number = 0
                        for i, each in enumerate(val["output"].keys()):
                            for item3 in val["output"][each].keys():
                                # print item,  context.key_value[each], val["output"][each][item]
                                if checker(item3, context.key_value[each],
                                           val["output"][each][item3]):
                                    pass
                                else:
                                    print("Key:{0}获取的值与期望不匹配{1}测试失败。".format(
                                        each, item3))
                                    return False
                            number += 1
                        if number != len(val["output"]):
                            print("SQL :执行SQL失败,返回值检查失败。")
                            return False
                # if isinstance(result, tuple):
                #     print("SQL :执行SQL成功,返回值检查成功。")
                #     return True
            except Exception as e:
                print(e)
                print("SQL :SQL返回值检查失败。")
                return False
    if "input" in val.keys():
        method = None
        headers = None
        param = None
        files = None
        cookies = None
        url = val["input"]["url"]
        if "rest" in val["input"].keys():
            rest = val["input"]["rest"]
            url_full = url + rest
        else:
            url_full = url
        print("接口请求地址: \n{0}".format(url_full))
        if "method" in val["input"].keys():
            method = val["input"]["method"]
            print("\nThe request method is :{0}".format(method))
        if "param" in val["input"].keys():
            param = val["input"]["param"]
            print("\nThe request parameter is:\n")
            if isinstance(param, dict):
                for every in param.items():
                    if isinstance(every[1], str):
                        if "eval" in every[1]:
                            m1 = re.match(u'.*eval\((?P<val>.+)\).*', every[1])
                            exp = m1.group("val")
                            param.update({every[0]: eval(exp)})
        print(decode_str(param))
        if "files" in val["input"].keys():
            files = {
                '{0}'.format(config.filename):
                open(val["input"]["files"], 'rb', 'utf-8')
            }
            print("\n发送的文件为:\n{0}".format(val["input"]["files"]))
        if "headers" in val["input"].keys():
            headers = val["input"]["headers"]
            print("\n接口请求头文件为:\n{}\n".format(headers))
        if "cookies" in context.key_value:
            cookies = context.key_value["cookies"]
            print("\n接口请求头文件为:\n{}\n".format(cookies))
        if "Cookie" in context.key_value:
            cookies = context.key_value["Cookie"]
            print("\n接口请求头文件为:\n{}\n".format(cookies))
        start_time = time.time()
        data = restful_api(url_full,
                           method,
                           params=param,
                           files=files,
                           headers=headers,
                           cookies=cookies)
        """
        下面为检测是否需要Mock数据辅助测试。此操作为了避免接口未开发完成是可以进行调试。
        """
        if config.method == "MOCK":
            if "mock" in val.keys():
                data = val["mock"]
        end_time = time.time()
        print("*" * 100)
        print("\n接口请求响应时延为:\n {0}\n".format(end_time - start_time))
        print("\n接口请求返回值:")
        if isinstance(data, tuple):
            if "JSESSIONID" in data[0]:
                context.key_value.update({"cookies": data[0]})
                data = data[1]
        print(decode_str(data))
        print("*" * 100)
        """
        获取是否该步骤是否需要保存的对应Key值。如该key对应返回有多个,则在上下文中保存为key+i(递归下去,从index为1开始))
        """
        if "key" in val.keys():
            if isinstance(val["key"], list):
                """
                当获取需要保存的Key为数组,此类输入适合那些返回值中只有唯一一个key时获取value。
                """
                for i in range(len(val["key"])):
                    ma = re.findall("[a-z]*[\d]", val["key"][i])
                    if ma:
                        value = get_values_by_key(data,
                                                  val["key"][i][0:-1],
                                                  values=[])
                    else:
                        value = get_values_by_key(data,
                                                  val["key"][i],
                                                  values=[])
                    if isinstance(value, list):
                        for k, each in enumerate(value, 1):
                            context.key_value.update(
                                {val["key"][i] + "%d" % k: each})
                    else:
                        context.key_value.update({val["key"][i]: value})
            elif isinstance(val["key"], dict):
                """
                当获取需要保存的Key为字典,此类输入适合那些返回值中有多个个key时,根据输入路径获取value。
                """
                for each in val["key"].keys():
                    value = get_value(val["key"][each], data)
                    context.key_value.update({each: value})
        print("\nThe Global Context key and value is :")
        print(context.key_value)
        """
            key值更新到pre
        """
        if "pre-key" in val.keys():
            if isinstance(val["pre-key"], list):
                for i in range(len(val["pre-key"])):
                    ma = re.findall("[a-z]*[\d]", val["pre-key"][i])
                    if ma:
                        value = get_values_by_key(data,
                                                  val["pre-key"][i][0:-1],
                                                  values=[])
                    else:
                        value = get_values_by_key(data,
                                                  val["pre-key"][i],
                                                  values=[])
                    if isinstance(value, list):
                        for k, each in enumerate(value, 1):
                            context.key_value.update(
                                {val["pre-key"][i] + "%d" % k: each})
                    else:
                        context.key_value.update({val["pre-key"][i]: value})
            elif isinstance(val["pre-key"], dict):
                for each in val["pre-key"].keys():
                    value = get_value(val["pre-key"][each], data)
            print("\nThe Global Context pre-key and value is :")
            print(value)
        """
            获取是否该步骤是否需要保存的对应Key值。如该key对应返回有多个,则在上下文中保存为key+i(递归下去,从index为1开始))
        """
        if "pre" in val.keys():
            if isinstance(val["pre"], list):
                """
                当获取需要保存的pre为数组,此类输入适合那些返回值中只有唯一一个key时获取value。
                """
                for i in range(len(val["pre"])):
                    ma = re.findall("[a-z]*[\d]", val["pre"][i])
                    if ma:
                        value = get_values_by_key(data,
                                                  val["pre"][i][0:-1],
                                                  values=[])
                    else:
                        value = get_values_by_key(data,
                                                  val["pre"][i],
                                                  values=[])
                    if isinstance(value, list):
                        for k, each in enumerate(value, 1):
                            context.key_value.update(
                                {val["pre"][i] + "%d" % k: each})
                    else:
                        context.key_value.update({val["key"][i]: value})
            elif isinstance(val["pre"], dict):
                """
                当获取需要保存的Key为字典,此类输入适合那些返回值中有多个个key时,根据输入路径获取value。
                """
                for each in val["pre"].keys():
                    value = get_value(val["pre"][each], data)
                    project_data.preData[each] = value
                print("\nThe project_data.preData key and value is : %s = " %
                      each)
                print(project_data.preData[each])
        """
        # 检查是否有输出校验,如果有进行逐个对比。
        """
        if "output" in val.keys():
            count = 0
            print("\n期望检测的返回值:")
            print(decode_str(val["output"]))
            for each in val["output"].keys():
                if not isinstance(val["output"][each], dict):
                    if checker(each, data, val["output"][each]):
                        count += 1
                    else:
                        print("检查返回 : %s 失败。\n" % each)
                        return False
                else:
                    try:
                        if not isinstance(data, dict) and not isinstance(
                                data, list):
                            if not isinstance(data, int):
                                data = data.encode("utf-8")
                            if checker(each, data, val["output"][each]):
                                count += 1
                            else:
                                print("检查返回 : %s 失败。\n" % data)
                                return False
                        else:
                            for typo in val["output"][each].keys():
                                if len(each.split(".")) > 1:
                                    value = get_value(each, data)
                                else:
                                    value = get_values_by_key(data,
                                                              each,
                                                              values=[])
                                if type(value).__name__ == "unicode":
                                    value = str(value)
                                else:
                                    pass
                                if not checker(typo, value,
                                               val["output"][each][typo]):
                                    print("检查key: %s返回值失败。\n" % each)
                                    return False
                            count += 1
                        print("检查key: {0}的返回值通过".format(each))
                    except Exception as e:
                        print(e)
                        return False
            if count != len(val["output"].keys()):
                print("\n所有检查Key值返回通过.")
                return False
    if "sleep" in val.keys():
        print("此步骤执行后会暂停{0}秒.".format(val["sleep"]))
        time.sleep(val["sleep"])
    return True