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()))
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
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
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
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())
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
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
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
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
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())
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
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)
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
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
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
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("商家合约信息审核失败")
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
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