def test_006_add_event_success(self): u''' 添加成功 ''' payload = {'eid':12,'name':"iphone12",'limit':2000,'address':"shenzhen",'start_time':'2017-10-09 12:00:00'} r = requests.post(self.base_url, data=payload) self.result = r.json() #删除新添加的数据,以便后面的测试 database = DB() database.clear_condition('sign_event','id=12') self.assertEqual(self.result['status'], 200) self.assertEqual(self.result['message'], 'add event success')
def test_elm(): db = DB() db.clear("order_push_record", "饿了么") r = Elm_Order() assert "ok" in r.elm_order() db.update("饿了么") db.close()
def create_guest(): db = DB() for table, data in datas.items(): db.clear(table) for d in data: db.insert(table, d) db.close()
def init_data(): db = DB() for table, data in datas.items(): db.clear(table) for d in data: db.insert(table, d) db.close()
class DialogueTest(unittest.TestCase): '''测试对话管理''' def setUp(self): self.db = DB() self.base_url = "http://39.96.87.250:8000/xiaohuang/" self.table_name = "myusecase" self.usecase = self.db.select(self.table_name) self.result = {} def tearDown(self): self.db.close() print(self.result) def test_beauty_dialog(self): '''测试闲聊机器人对话''' pass
def test05_pick_boxes(self): ''' 扫描SN(若m个旧箱子中共有n种物料,则此案例请求n次) ''' # **************************** 案例公共信息初始化 **************************** self.caseName = (lambda: sys._getframe(1).f_code.co_name)() global_config.set_value("CASENAME", self.caseName) base_url = self.url + getInterfaceData("调用接口") if self.terminateProcess != "" \ or len(self.dict["#旧箱号"]) == 0: self.testResult = "跳过" return # 与库表中数据主键重复情况均需考虑是否用初始化 if getInterfaceData("是否数据库初始化") == "是": DB().delete(tableName, deleteData) try: # **************************** 交易部分 **************************** header = \ { "Authorization": "Bearer " + self.dict["TOKEN"], "Content-Type": "application/json" } for i in range(len(self.dict["#旧箱号"])): boxName = combineJson(self.dict, "#旧箱号", i) newBoxInfo = self.dict["MATERIALARRAY"].get(boxName) for j in range(len(newBoxInfo)): params = \ { "bill_code": makeJsonData("#出库拣配单号"), "box_code": boxName, "material_sns": newBoxInfo[j], "phase": "SubmitPhase", "platform": "pda", "tgt_box_code": newBoxInfo[j].get("tbox") } params = json.dumps(params).replace("'", "\"") # print(params) self.result = myRequest(base_url, headers=header, data=params) # **************************** 校验部分 **************************** checkTheMessage("code", varNameInExcel="code") checkTheMessage("msg", varNameInExcel="msg") # **************************** 常规部分 **************************** self.testResult = "成功" except Exception as e: self.testResult = "失败" raise e finally: # 在excel中写值脚本不可写入try/except,否则html报告中无法区别体现“失败”和“异常” global_config.set_value("TESTRESULT", self.testResult) self.terminateProcess = True loadProcessValue("#流程开关", realValue="拣配成功") writeTextResult(myRow=self.myRow)
def init_data(): # 创建一个DB类的实例 db = DB() # print(datas.items()) for table, data in datas.items(): db.clear(table) for d in data: db.insert(table, d) db.close()
def init_data(): db = DB() for table, data in datas.items(): key = keys[table]['key'] value = keys[table]['value'] db.clear(table, key, value) for d in data: db.insert(table, d) db.close()
def test_meituan(): '''美团下单''' db=DB() db.clear("order_push_record","美团") r = Meituan_Order() assert "ok" in r.meituan_order() db.update("美团") db.close()
def test_baidu(): '''百度下单''' db=DB() db.clear("fosordertranslog","百度") r=Baidu_Order() assert "error" in r.baidu_order() db.update("百度") db.close()
def test06_pick_boxes(self): ''' ***销售放货出库(分销)***扫描SN(有n个箱子,则此案例中循环请求n次) ''' # **************************** 案例公共信息初始化 **************************** self.caseName = (lambda: sys._getframe(1).f_code.co_name)() global_config.set_value("CASENAME", self.caseName) base_url = self.url + getInterfaceData("调用接口") if self.terminateProcess != "" \ or self.dict["箱子总数"] == 0: self.testResult = "跳过" return # 与库表中数据主键重复情况均需考虑是否用初始化 if getInterfaceData("是否数据库初始化") == "是": DB().delete(tableName, deleteData) try: # **************************** 交易部分 **************************** header = \ { "Authorization": "Bearer " + self.dict["TOKEN"], "Content-Type": "application/json" } for i in range(0, self.dict["箱子总数"]): boxName = combineJson(self.dict, "箱号", i) params = \ { "bill_code": makeJsonData("出库拣配单号"), "box_code": boxName, "material_sns": self.dict["MATERIALARRAY"][boxName], "phase": "SubmitPhase", "platform": "pda" } params = json.dumps(params).replace("'", "\"") print(params) self.result = myRequest(base_url, headers=header, data=params) # **************************** 校验部分 **************************** checkTheMessage("code", varNameInExcel="code") checkTheMessage("msg", varNameInExcel="msg") # **************************** 常规部分 **************************** self.testResult = "成功" except Exception as e: self.testResult = "失败" raise e finally: # 在excel中写值脚本不可写入try/except,否则html报告中无法区别体现“失败”和“异常” global_config.set_value("TESTRESULT", self.testResult) writeTextResult()
def test06_tray_up_to_positon(self): ''' 扫码进行托盘入仓位 ''' # **************************** 案例公共信息初始化 **************************** self.caseName = (lambda: sys._getframe(1).f_code.co_name)() global_config.set_value("CASENAME",self.caseName) base_url = self.url + getInterfaceData("调用接口") # “仓位”字段为本案例的执行开关 if self.terminateProcess != ("" and "拣配成功") \ or makeJsonData("仓位",whetherToInitialize="是") == "中断": self.testResult = "跳过" return # 与库表中数据主键重复情况均需考虑是否用初始化 if getInterfaceData("是否数据库初始化") == "是": DB().delete(tableName,deleteData) try: # **************************** 交易部分 **************************** header = \ { "Authorization": "Bearer " + self.dict["TOKEN"], "Content-Type": "application/json" } params = \ { "sl": makeJsonData("仓位"), "trays": [ makeJsonData("托盘") ] } params = json.dumps(params).replace("'","\"") self.result = myRequest(base_url, headers=header, data=params) # **************************** 校验部分 **************************** checkTheMessage("code",varNameInExcel="code") checkTheMessage("msg",varNameInExcel="msg") # **************************** 常规部分 **************************** self.testResult = "成功" except Exception as e: self.testResult = "失败" raise e finally: # 在excel中写值脚本不可写入try/except,否则html报告中无法区别体现“失败”和“异常” global_config.set_value("TESTRESULT",self.testResult) self.terminateProcess = True loadProcessValue("#流程开关",realValue="库存调整成功") writeTextResult(myRow=self.myRow)
def test02_get_available_boxes(self): ''' 查询已有箱子,筛选出实物箱子 ''' # **************************** 案例公共信息初始化 **************************** self.caseName = (lambda: sys._getframe(1).f_code.co_name)() global_config.set_value("CASENAME",self.caseName) base_url = self.url + getInterfaceData("调用接口") # 与库表中数据主键重复情况均需考虑是否用初始化 if getInterfaceData("是否数据库初始化") == "是": DB().delete(tableName,deleteData) try: # **************************** 交易部分 **************************** header = \ { "Authorization": "Bearer " + self.dict["TOKEN"], "Content-Type": "application/json" } for i in range(len(self.dict["#旧箱号"])): boxName = self.dict["#旧箱号"][i] params = \ { "limit": "10", "no": boxName, "page": 1, "pos": {} } params = json.dumps(params).replace("'","\"") self.result = myRequest(base_url, headers=header, data=params) # **************************** 校验部分 **************************** checkTheMessage("code",varNameInExcel="code") checkTheMessage("msg",varNameInExcel="msg") # **************************** 返回值部分 **************************** # 将非实物箱子剔除待调拨范围 boxInfo = self.result["rst"]["data"]["items"][0] if boxInfo.get("physics"): if boxInfo["physics"].get("package") != "纸箱": self.dict["#旧箱号"].remove(boxName) # **************************** 常规部分 **************************** self.testResult = "成功" except Exception as e: self.testResult = "失败" raise e finally: # 在excel中写值脚本不可写入try/except,否则html报告中无法区别体现“失败”和“异常” global_config.set_value("TESTRESULT",self.testResult) writeTextResult()
class Operate(): def __init__(self, db_name): self.connection = DB(db_name).connection """ 获取订单信息 :param username: :return result: """ def get_invest_order(self, username): sql = """SELECT * FROM `pj_test3_user`.`t_user` a LEFT JOIN `pj_test3_core`.`t_plan_invest` b ON a.`id`=b.`investor_id` WHERE a.`cellphone`='%s' AND b.`status`=%d;""" % ( username, 200) with self.connection.cursor() as cursor: cursor.execute(sql) result = cursor.fetchall() return result """ 设置当天债转进池金额为0 """ def set_debit_limit_zero(self): self.connection.ping(reconnect=True) sql = """UPDATE `pj_test3_other`.`t_debt_limit` a SET a.debt_limit=0 WHERE a.`effect_date`=DATE(NOW());""" with self.connection.cursor() as cursor: cursor.execute(sql) self.connection.commit() """ 获取订单状态 :param username: :return result: """ def get_invest_order_status(self, username): sql = """SELECT b.`status` FROM `pj_test3_user`.`t_user` a LEFT JOIN `pj_test3_core`.`t_plan_invest` b ON a.`id`=b.`investor_id` WHERE a.`cellphone`='%s' ORDER BY b.`id` DESC LIMIT 1;""" % ( username) with self.connection.cursor() as cursor: cursor.execute(sql) result = cursor.fetchall()[0] return result def close_invest_order_check(self): self.connection.close()
def delete_data(): db = DB() for table, data in datas.items(): key = keys[table]['key'] value = keys[table]['value'] db.clear(table, key, value) db.close()
def insert_data2(): db = DB() for table, data in datas1.items(): key = keys[table]['key'] value = keys[table]['value'] for d in data: db.insert(table, d) db.close()
def test04_box_uptray(self): ''' 完成越库上架 ''' # **************************** 案例公共信息初始化 **************************** self.caseName = (lambda: sys._getframe(1).f_code.co_name)() global_config.set_value("CASENAME",self.caseName) base_url = self.url + getInterfaceData("调用接口") if self.terminateProcess != "": self.testResult = "跳过" return # 与库表中数据主键重复情况均需考虑是否用初始化 if getInterfaceData("是否数据库初始化") == "是": DB().delete(tableName,deleteData) try: # **************************** 交易部分 **************************** header = \ { "Authorization": "Bearer " + self.dict["TOKEN"], "Content-Type": "application/json" } params = \ { "box_codes": self.dict["BOXARRAY"], "sl": self.dict["SL"], "tray": self.dict["TRAY"], "wid": self.dict["CANGKU"] } params = json.dumps(params).replace("'","\"") self.result = myRequest(base_url, headers=header, data=params) # **************************** 校验部分 **************************** checkTheMessage("code",varNameInExcel="code") checkTheMessage("msg",varNameInExcel="msg") # **************************** 常规部分 **************************** self.testResult = "成功" except Exception as e: self.testResult = "失败" raise e finally: # 在excel中写值脚本不可写入try/except,否则html报告中无法区别体现“失败”和“异常” global_config.set_value("TESTRESULT",self.testResult) self.terminateProcess = True loadProcessValue("#流程开关",realValue="上架成功") writeTextResult(myRow=self.myRow)
def test03_get_list_info03(self): ''' 查询参数信息 ''' # **************************** 案例公共信息初始化 **************************** self.caseName = (lambda: sys._getframe(1).f_code.co_name)() global_config.set_value("CASENAME",self.caseName) base_url = self.url + getInterfaceData("调用接口") if self.terminateProcess != "": self.testResult = "跳过" return # 与库表中数据主键重复情况均需考虑是否用初始化 if getInterfaceData("是否数据库初始化") == "是": DB().delete(tableName,deleteData) try: # **************************** 交易部分 **************************** header = \ { "Authorization": "Bearer " + self.dict["TOKEN"], "Content-Type": "application/json" } params = \ { "whCode": self.dict["CANGKU"] } params = json.dumps(params).replace("'","\"") self.result = myRequest(base_url, headers=header, data=params) # **************************** 校验部分 **************************** checkTheMessage("code",varNameInExcel="code") checkTheMessage("msg",varNameInExcel="msg") # **************************** 返回值部分 **************************** global_config.set_value("SL", combineJson(self.result,"rst")) # **************************** 常规部分 **************************** self.testResult = "成功" except Exception as e: self.testResult = "失败" raise e finally: # 在excel中写值脚本不可写入try/except,否则html报告中无法区别体现“失败”和“异常” global_config.set_value("TESTRESULT",self.testResult) writeTextResult()
def test03_get_adjust_type(self): ''' 获取调整类型 ''' # **************************** 案例公共信息初始化 **************************** self.caseName = (lambda: sys._getframe(1).f_code.co_name)() global_config.set_value("CASENAME",self.caseName) base_url = self.url + getInterfaceData("调用接口") # 与库表中数据主键重复情况均需考虑是否用初始化 if getInterfaceData("是否数据库初始化") == "是": DB().delete(tableName,deleteData) try: # **************************** 交易部分 **************************** header = \ { "Authorization": "Bearer " + self.dict["TOKEN"], "Content-Type": "application/json" } params = \ { "enumnames": [ "adjust_type" ] } params = json.dumps(params).replace("'","\"") self.result = myRequest(base_url, headers=header, data=params) # **************************** 校验部分 **************************** checkTheMessage("code",varNameInExcel="code") checkTheMessage("msg",varNameInExcel="msg") # **************************** 返回值部分 **************************** # 获取调整类型代码 adjustType = self.result["rst"]["data"]["adjust_type"].get(self.dict["#调整类型"]) loadProcessValue("#调整类型",realValue=adjustType) global_config.set_value("#调整类型", adjustType) # **************************** 常规部分 **************************** self.testResult = "成功" except Exception as e: self.testResult = "失败" raise e finally: # 在excel中写值脚本不可写入try/except,否则html报告中无法区别体现“失败”和“异常” global_config.set_value("TESTRESULT",self.testResult) writeTextResult()
def test01_get_WithdrawType(self): ''' 登陆相应环境壳后,根据“出库拣配单号”/“SAP单据号”查询“出库类型” ''' # **************************** 案例公共信息初始化 **************************** self.caseName = (lambda: sys._getframe(1).f_code.co_name)() global_config.set_value("CASENAME", self.caseName) login_url = self.url + getInterfaceData("登陆接口") base_url = self.url + getInterfaceData("调用接口") # 与库表中数据主键重复情况均需考虑是否用初始化 if getInterfaceData("是否数据库初始化") == "是": DB().delete(tableName, deleteData) try: # **************************** 登陆部分 **************************** username = makeJsonData("经办登录名") password = makeJsonData("登陆密码") token = get_token(login_url, username, password) # **************************** 交易部分 **************************** header = \ { "Authorization": "Bearer " + token, "Content-Type": "application/json" } params = \ { "choice": { "EOBtime": "", "SOBtime": "", "code": makeJsonData("出库拣配单号"), "contract": "", "from": "", "orderId": makeJsonData("SAP单据号"), "purchaseId": "", "status": "", "type": "" }, "limit": "10", "page": 1 } params = json.dumps(params).replace("'", "\"") self.result = myRequest(base_url, headers=header, data=params) # **************************** 校验部分 **************************** checkTheMessage("code", varNameInExcel="code") checkTheMessage("msg", varNameInExcel="msg") # **************************** 返回值部分 **************************** # 获取“token” global_config.set_value("TOKEN", token) if makeJsonData("出库拣配单号") == "": loadProcessValue("出库拣配单号", "rst", "data", "items", 0, "code") # 获取“出库类型” outBoundType = \ { "ZJ01": "销售放货出库(项目)", "ZJ02": "销售放货出库(分销)", "ZJ032": "销售维修出库", "ZJ04": "样机借出出库", "ZPRF": "采购退货出库" } withdrawType = outBoundType.get( combineJson(self.result, "rst", "data", "items", 0, "type")) loadProcessValue("#下架类型", realValue=withdrawType) global_config.set_value("下架类型", withdrawType) # **************************** 常规部分 **************************** self.testResult = "成功" except Exception as e: self.testResult = "失败" raise e finally: # 在excel中写值脚本不可写入try/except,否则html报告中无法区别体现“失败”和“异常” global_config.set_value("TESTRESULT", self.testResult) writeTextResult()
def setUp(self): self.db = DB() self.base_url = "http://39.96.87.250:8000/xiaohuang/" self.table_name = "myusecase" self.usecase = self.db.select(self.table_name) self.result = {}
def test01_get_costtype(self): ''' 遍历获取所有“费用种类-票据类型”组合项,并存入全局变量 ''' import copy if self.terminateProcess != "": self.testResult = "跳过" return # **************************** 案例公共信息初始化 **************************** self.caseName = (lambda: sys._getframe(1).f_code.co_name)() global_config.set_value("CASENAME",self.caseName) login_url = self.url + getInterfaceData("登陆接口") base_url = self.url + getInterfaceData("调用接口") # 与库表中数据主键重复情况均需考虑是否用初始化 if getInterfaceData("是否数据库初始化") == "是": DB().delete(tableName,deleteData) try: # **************************** 登陆部分 **************************** username = makeJsonData("经办登录名") password = makeJsonData("登陆密码") token = get_token(login_url,username,password, errInfo=False) time.sleep(1) # **************************** 交易部分 **************************** header = \ { "Authorization": "Bearer " + token, "Content-Type": "application/json" } params = {} params = json.dumps(params).replace("'","\"") self.result = myRequest(base_url, headers=header, data=params) # **************************** 校验部分 **************************** checkTheMessage("code",varNameInExcel="code") checkTheMessage("msg",varNameInExcel="msg") # **************************** 返回值部分 **************************** # 获取“token” global_config.set_value("TOKEN",token) ct1 = self.result["rst"]["data"]["costtype"] costType = [] for k1 in ct1.keys(): # 用于划分模块执行 if makeJsonData("费用种类") != "": if ct1[k1]["text"] != makeJsonData("费用种类"): continue myDict = {} if ct1[k1].get("status") == "x": continue myDict["category"] = k1 myDict["text1"] = ct1[k1]["text"] ct2 = ct1[k1]["sub"] md1 = copy.deepcopy(myDict) for k2 in ct2.keys(): if ct2[k2].get("status") == "x": continue myDict["costtype"] = k2 myDict["text2"] = ct2[k2]["text"] ct3 = ct2[k2]["sub"] md2 = copy.deepcopy(myDict) for i, k3 in enumerate(ct3.keys()): myDict["invoicetype"] = k3 myDict["invoicetypestr"] = ct3[k3]["text"] myDict["flag"] = "" costType.append(myDict) if i + 1 == len(ct3): myDict = copy.deepcopy(md1) else: myDict = copy.deepcopy(md2) # 获取“供应商编号” global_config.set_value("费用类型组合项", costType) # a = [] # for k in range(5): # a.append(self.dict["费用类型组合项"][k]) # global_config.set_value("费用类型组合项", a) # **************************** 常规部分 **************************** self.testResult = "成功" except Exception as e: self.testResult = "失败" raise e finally: # 在excel中写值脚本不可写入try/except,否则html报告中无法区别体现“失败”和“异常” global_config.set_value("TESTRESULT",self.testResult) writeTextResult()
def test08_check_undercarriage_result(self): ''' 查询下架结果 ''' # **************************** 案例公共信息初始化 **************************** self.caseName = (lambda: sys._getframe(1).f_code.co_name)() global_config.set_value("CASENAME", self.caseName) login_url = self.url + getInterfaceData("登陆接口") base_url = self.url + getInterfaceData("调用接口") if self.terminateProcess != "": self.testResult = "跳过" return # 与库表中数据主键重复情况均需考虑是否用初始化 if getInterfaceData("是否数据库初始化") == "是": DB().delete(tableName, deleteData) try: # **************************** 登陆部分 **************************** username = makeJsonData("经办登录名") password = makeJsonData("登陆密码") token = get_token(login_url, username, password) # **************************** 交易部分 **************************** header = \ { "Authorization": "Bearer " + token, "Content-Type": "application/json" } params = \ { "choice": { "EDHtime": "", "SDHtime": "", "boundCode": makeJsonData("出库拣配单号"), "boxCode": "", "type": "", "wh": "" }, "limit": "10", "page": 1 } params = json.dumps(params).replace("'", "\"") self.result = myRequest(base_url, headers=header, data=params) # **************************** 校验部分 **************************** checkTheMessage("code", varNameInExcel="code") checkTheMessage("msg", varNameInExcel="msg") assert len( self.result["rst"]["data"]["items"]) == self.dict["箱子总数"] # **************************** 常规部分 **************************** self.testResult = "成功" except Exception as e: self.testResult = "失败" raise e finally: # 在excel中写值脚本不可写入try/except,否则html报告中无法区别体现“失败”和“异常” global_config.set_value("TESTRESULT", self.testResult) self.terminateProcess = True loadProcessValue("#流程开关", realValue="下架成功") writeTextResult(myRow=self.myRow)
def test02_get_limitperiod_and_createprocess(self): ''' (如有)查询该费用种类下额度信息,并创建审批流(此案例采取查询一条创建一条的方式) ''' import datetime # **************************** 案例公共信息初始化 **************************** self.caseName = (lambda: sys._getframe(1).f_code.co_name)() global_config.set_value("CASENAME",self.caseName) login_url = self.url + getInterfaceData("登陆接口") base_url = getInterfaceData("调用接口").split("|") if self.terminateProcess != "": self.testResult = "跳过" return # 与库表中数据主键重复情况均需考虑是否用初始化 if getInterfaceData("是否数据库初始化") == "是": DB().delete(tableName,deleteData) try: md = self.dict["费用类型组合项"] for i in range(len(md)): # **************************** 登陆部分 **************************** username = makeJsonData("经办登录名") password = makeJsonData("登陆密码") token = get_token(login_url, username, password, errInfo=False) time.sleep(1) header = \ { "Authorization": "Bearer " + token, "Content-Type": "application/json" } # ***** 查询额度信息 ***** params = { "amount": (10 + i), "category": md[i]["category"], "costtype": md[i]["costtype"], "enddate": "2019-03", "fromdate": "2019-03", "hasfysqd": "0" } params = json.dumps(params).replace("'","\"") self.result = myRequest(self.url + base_url[0], headers=header, data=params) # **************************** 校验部分 **************************** if self.result.get("code") == 200: print("📈 第 ",i + 1," 条流程中“额度查询”响应成功") md[i]["limit"] = self.result["rst"]["data"]["items"] else: print("📈 第 ",i + 1," 条流程中“额度查询”响应失败,结果为:\n",self.result, "\n") md[i]["flag"] = "fail" continue # ***** 创建审批流 ***** # **************************** 登陆部分(获取token放入原有) **************************** # header = \ # { # "Authorization": "Bearer " + token, # "Content-Type": "application/json", # "cookie": "connect.sid=s%3A3YnGCJfqNt_oOj5s-YkGzL92etUSMwCH.4E1iphzTMXlihUbKyeft2yEDBA1T4XRUxU1%2BwtwPoQM" # # "cookie": "connect.sid=s%3A8f76wCFMPoBLO2BtlGEZD71vioO9HsXy.Bb6vYQ7YpzLLpp0RWQbKy0BjIufZyiqHn8f9D0Vkrcc" # } # cookie = login_cookie(login_url, username, password) # time.sleep(1) # for item in cookie: # if item.name == "connect.sid": # cookieStr = "connect.sid=" + item.value # header["cookie"] = cookieStr # 此方法获取cookie不可用 # cookie = get_cookie(login_url, username, password) # header["cookie"] = "connect.sid=" + cookie["connect.sid"] params = { "doc": { "model": { "amount": str(10 + i), "applydate": str(datetime.date.today()), "corp": "1000", "cost": { "accomcost": 0, "amount": str(10 + i), "attanum": "3", "category": md[i]["category"], "citytranscost": 0, "costtype": md[i]["costtype"], "enddate": "2019-03", "fromdate": "2019-03", "haszzs": "否", "invoicetype": md[i]["invoicetype"], "invoicetypestr": md[i]["invoicetypestr"], "jtjehz": 0, "othercost": 0, "tax": "", "tripcost": [ ], "typestr": md[i]["text1"] + "-" + md[i]["text2"] }, "department": { "_id": "5742a607779ec2cb7405180c", "name": "软件及应用事业部" }, "division": "4000", "extra": { "note": "自动化" }, "finance": { "costcenter": "9100A21999", "costcenterstr": "软件事业部公共成本中心", "due": str(10 + i), "loan": 0, "returnmoney": "0" }, "fysqd": [ ], "hasfysqd": "0", "isintegration": "0", "jcfwxm": { }, "limit": md[i]["limit"], "profit_center": "8100A29001", "user": { "_id": "5742a607779ec2cb74051a5d", "code": "00001853", "costype": "9100A21999", "login": "******", "name": "王乔晨" } } } } params = json.dumps(params).replace("'","\"") self.result = myRequest(self.url + base_url[1], headers=header, data=params) # self.result = requestWithCookie(self.url + base_url[1], # headers=header, data=params, cookies=cookie) # **************************** 校验部分 **************************** if self.result.get("code") == 200: print("📈 第 ",i + 1," 条流程中“创建审批流”响应成功") md[i]["nodeId"] = self.result["rst"]["nodeId"] md[i]["processId"] = self.result["rst"]["processId"] md[i]["报销金额"] = (10 + i) else: print("📈 第 ",i + 1," 条流程中“创建审批流”响应失败,结果为:\n",self.result, "\n") md[i]["flag"] = "fail" continue # ***** 查询审批流信息 ***** # del header["cookie"] params = { "nodeId": md[i]["nodeId"], "processId": md[i]["processId"] } params = json.dumps(params).replace("'","\"") self.result = myRequest(self.url + base_url[2], headers=header, data=params) # **************************** 校验部分 **************************** if self.result.get("code") == 200: print("📈 第 ",i + 1," 条流程中“查询审批流信息”响应成功") md[i]["processlog"] = self.result["rst"]["processlog"] md[i]["candidates"] = self.result["rst"]["candidates"] md[i]["doc"] = self.result["rst"]["doc"] md[i]["报销单号"] = self.result["rst"]["doc"]["model"]["code"] else: print("📈 第 ",i + 1," 条流程中“查询审批流信息”响应失败,结果为:\n",self.result, "\n") md[i]["flag"] = "fail" continue # 费用类型为“固定费用”或“间接费用”,且额度充足时,自动审批 # if md[i]["text1"] == "固定报销" \ # or md[i]["text1"] == "间接运营费用": if md[i]["text1"] == "固定报销": continue # ***** 审批流 ***** for j in range(len(md[i]["processlog"]) - 1): # **************************** 登陆部分 **************************** username = md[i]["candidates"][0]["receivers"][0]["login"] token = get_token(login_url, username, password, errInfo=False) time.sleep(1) header = \ { "Authorization": "Bearer " + token, "Content-Type": "application/json" } # ***** (审批前)查询审批流信息 ***** # if j > 0: params = { "nodeId": md[i]["processlog"][j + 1]["nodeid"], "processId": md[i]["processId"] } params = json.dumps(params).replace("'", "\"") self.result = myRequest(self.url + base_url[2], headers=header, data=params) # **************************** 校验部分 **************************** if self.result.get("code") == 200: print("📈 第 ", i + 1, " 条流程中第 ", j + 1, " 次“(审批前)查询审批流信息”响应成功") md[i]["processlog"] = self.result["rst"]["processlog"] md[i]["candidates"] = self.result["rst"]["candidates"] md[i]["doc"] = self.result["rst"]["doc"] else: print("📈 第 ", i + 1, " 条流程中第 ", j + 1, " 次“(审批前)查询审批流信息”响应失败,结果为:\n", self.result, "\n") md[i]["flag"] = "fail" break # ***** (开始审批后)审批 ***** if len(md[i]["processlog"]) == j + 2: # 最后一岗 candidates = [] else: # 中间岗 candidates = md[i]["candidates"] params = \ { "candidates": candidates, "doc": md[i]["doc"], "nodeId": md[i]["processlog"][j + 1]["nodeid"], "processId": md[i]["processId"] } params = json.dumps(params).replace("'","\"") self.result = myRequest(self.url + base_url[3], headers=header, data=params) # **************************** 校验部分 **************************** if self.result.get("code") == 200: print("📈 第 ",i + 1," 条流程中第 ", j + 1, " 次“查询审批流信息”响应成功") else: print("📈 第 ",i + 1," 条流程中第 ", j + 1, " 次“查询审批流信息”响应失败,结果为:\n",self.result, "\n") md[i]["flag"] = "fail" break # ***** (审批后)查询审批流信息,用于获取下一岗nodeid ***** if len(md[i]["processlog"]) > j + 2: params = { "nodeId": md[i]["processlog"][j + 1]["nodeid"], "processId": md[i]["processId"] } params = json.dumps(params).replace("'", "\"") self.result = myRequest(self.url + base_url[2], headers=header, data=params) # **************************** 校验部分 **************************** if self.result.get("code") == 200: print("📈 第 ", i + 1, " 条流程中第 ", j + 1, " 次“(审批后)查询审批流信息”响应成功") md[i]["processlog"] = self.result["rst"]["processlog"] else: print("📈 第 ", i + 1, " 条流程中第 ", j + 1, " 次“(审批后)查询审批流信息”响应失败,结果为:\n", self.result, "\n") md[i]["flag"] = "fail" break self.testResult = "成功" except Exception as e: self.testResult = "失败" raise e finally: # 在excel中写值脚本不可写入try/except,否则html报告中无法区别体现“失败”和“异常” global_config.set_value("TESTRESULT",self.testResult) writeTextResult()
def test03_checkpoint(self): ''' 遍历查询所有报销单数据有效性 ''' # **************************** 案例公共信息初始化 **************************** self.caseName = (lambda: sys._getframe(1).f_code.co_name)() global_config.set_value("CASENAME",self.caseName) login_url = self.url + getInterfaceData("登陆接口") base_url = self.url + getInterfaceData("调用接口") if self.terminateProcess != "": self.testResult = "跳过" return # 与库表中数据主键重复情况均需考虑是否用初始化 if getInterfaceData("是否数据库初始化") == "是": DB().delete(tableName,deleteData) try: # **************************** 登陆部分 **************************** username = makeJsonData("经办登录名") password = makeJsonData("登陆密码") token = get_token(login_url,username,password, errInfo=False) time.sleep(1) # **************************** 交易部分 **************************** header = \ { "Authorization": "Bearer " + token, "Content-Type": "application/json" } md = self.dict["费用类型组合项"] result = [] for i in range(len(md)): params = { "approval_status": "1", "certcode": "", "code": md[i].get("报销单号"), "costtype": "", "finenddate": "", "finfromdate": "", "invoicetypestr": "", "limit": "10", "page": 1, "profit_center": "", "status": "valid", "usercode": "", "username": "" } params = json.dumps(params).replace("'","\"") self.result = myRequest(base_url, headers=header, data=params) # **************************** 校验部分 **************************** if self.result.get("code") == 200 \ and self.result["rst"]["data"]["total"] > 0: print("📈 第 ",i + 1," 条流程报销单新建成功") md[i]["flag"] = "success" else: print("📈 第 ",i + 1," 条流程报销单新建后查询失败,请手工校验!结果为:\n",self.result, "\n") md[i]["flag"] = "fail" r = {} r["报销单号"] = md[i].get("报销单号") r["单据状态"] = md[i]["flag"] r["费用种类"] = md[i]["text1"] r["费用种类详情"] = md[i]["text2"] r["票据类型"] = md[i]["invoicetypestr"] r["报销金额"] = md[i].get("报销金额") result.append(r) print("📈 最终新建结果为:\n", result) # **************************** 常规部分 **************************** self.testResult = "成功" except Exception as e: self.testResult = "失败" raise e finally: # 在excel中写值脚本不可写入try/except,否则html报告中无法区别体现“失败”和“异常” global_config.set_value("TESTRESULT",self.testResult) self.terminateProcess = True loadProcessValue("#流程开关",realValue="流程结束") loadProcessValue("#单据数据",realValue=str(result)) writeTextResult(myRow=self.myRow)
def init_data(): DB().init_data(datas)
def test03_pick_boxes(self): ''' 登陆相同环境的PDA后,对每个箱子分别拣配(有n个箱子,则此案例中循环请求n次),拣配后查询各箱子的“status”,若为2则为整箱,跳过扫sn ''' # **************************** 案例公共信息初始化 **************************** self.caseName = (lambda: sys._getframe(1).f_code.co_name)() global_config.set_value("CASENAME", self.caseName) login_url = self.url + getInterfaceData("登陆接口") base_url = self.url + getInterfaceData("调用接口") if self.terminateProcess != "": self.testResult = "跳过" return # 与库表中数据主键重复情况均需考虑是否用初始化 if getInterfaceData("是否数据库初始化") == "是": DB().delete(tableName, deleteData) try: # **************************** 登陆部分 **************************** username = makeJsonData("经办登录名") password = makeJsonData("登陆密码") time.sleep(1) token = get_token(login_url, username, password) # **************************** 交易部分 **************************** header = \ { "Authorization": "Bearer " + token, "Content-Type": "application/json" } boxNum = deepcopy(len(self.dict["#旧箱号"])) boxes = deepcopy(self.dict["#旧箱号"]) for i in range(boxNum): boxName = boxes[i] print("📦 第 %d 次扫描箱子,箱号为:%s" % (i + 1, boxName)) params = \ { "bill_code": makeJsonData("#出库拣配单号"), "box_code": boxName, "phase": "BoxPhase", "platform": "pda", "sns": [] } params = json.dumps(params).replace("'", "\"") self.result = myRequest(base_url, headers=header, data=params) # **************************** 校验部分 **************************** checkTheMessage("code", varNameInExcel="code") checkTheMessage("msg", varNameInExcel="msg") # **************************** 返回值部分 **************************** materialsInfo = self.result["rst"]["data"].get("materials") boxInfo = eval( combineJson(self.result, "rst", "data", "bill", "allBoxes")) if "materialsArray" not in locals().keys(): materialsArray = {} for j in range(len(boxInfo)): if boxInfo[j].get("NO") == boxName: if boxInfo[j]["status"] == 2: self.dict["#旧箱号"].remove(boxName) global_config.set_value("#旧箱号", self.dict["#旧箱号"]) self.dict["#新箱号"].append(boxName) global_config.set_value("#新箱号", self.dict["#新箱号"]) elif boxInfo[j]["status"] == 0: for k in range(len(materialsInfo)): if materialsInfo[k].get("ms"): newMaterial = materialsInfo[k]["ms"][0] else: newMaterial = materialsInfo[k] if newMaterial.get("code") == boxName: if materialsArray.get(boxName) is None: materialsArray[boxName] = [] materialsArray[boxName].append(newMaterial) global_config.set_value("MATERIALARRAY", materialsArray) # 获取“token” global_config.set_value("TOKEN", token) # **************************** 常规部分 **************************** self.testResult = "成功" except Exception as e: self.testResult = "失败" raise e finally: # 在excel中写值脚本不可写入try/except,否则html报告中无法区别体现“失败”和“异常” global_config.set_value("TESTRESULT", self.testResult) writeTextResult()
def test01_get_list_info01(self): ''' 登陆壳后,根据“入库单号”查询箱号及仓库号(不填“入库单号”则跳过此案例) ''' # **************************** 案例公共信息初始化 **************************** self.caseName = (lambda: sys._getframe(1).f_code.co_name)() global_config.set_value("CASENAME",self.caseName) login_url = self.url + getInterfaceData("登陆接口") base_url = self.url + getInterfaceData("调用接口") # “箱号-01”字段为本案例的执行开关 if self.terminateProcess != "" \ or makeJsonData("箱号-01") != "": # 用于获取箱号信息 boxArray = [] for i in range(1,30): varName = "箱号-0%s" %i varValue = makeJsonData(varName) if varValue != "" and varValue is not None: boxArray.append(varValue) else: break global_config.set_value("BOXARRAY",boxArray) global_config.set_value("CANGKU",makeJsonData("仓库号")) self.testResult = "跳过" return # 与库表中数据主键重复情况均需考虑是否用初始化 if getInterfaceData("是否数据库初始化") == "是": DB().delete(tableName,deleteData) try: # **************************** 登陆部分 **************************** username = makeJsonData("经办登录名") password = makeJsonData("登陆密码") token = get_token(login_url,username,password) # **************************** 交易部分 **************************** header = \ { "Authorization": "Bearer " + token, "Content-Type": "application/json" } params = \ { "code":makeJsonData("入库单号") } params = json.dumps(params).replace("'","\"") self.result = myRequest(base_url, headers=header, data=params) # **************************** 校验部分 **************************** checkTheMessage("code",varNameInExcel="code") checkTheMessage("msg",varNameInExcel="msg") # **************************** 返回值部分 **************************** # 获取“token” global_config.set_value("TOKEN",token) # 获取箱号信息 boxInfo = eval(combineJson(self.result,"rst","data","boxes")) boxArray = [] for i in range(0,len(boxInfo)): boxArray.append(boxInfo[i]["code"]) global_config.set_value("BOXARRAY",boxArray) # 获取仓库编号 global_config.set_value("CANGKU", combineJson(self.result,"rst","data","to")) # **************************** 常规部分 **************************** self.testResult = "成功" except Exception as e: self.testResult = "失败" raise e finally: # 在excel中写值脚本不可写入try/except,否则html报告中无法区别体现“失败”和“异常” global_config.set_value("TESTRESULT",self.testResult) writeTextResult()
def test04_pick_boxes(self): ''' 登陆相同环境的PDA后,对每个箱子分别拣配(有n个箱子,则此案例中循环请求n次) ''' # **************************** 案例公共信息初始化 **************************** self.caseName = (lambda: sys._getframe(1).f_code.co_name)() global_config.set_value("CASENAME",self.caseName) login_url = self.url + getInterfaceData("登陆接口") base_url = self.url + getInterfaceData("调用接口") if self.terminateProcess != "": self.testResult = "跳过" return # 与库表中数据主键重复情况均需考虑是否用初始化 if getInterfaceData("是否数据库初始化") == "是": DB().delete(tableName,deleteData) try: # **************************** 登陆部分 **************************** username = makeJsonData("经办登录名") password = makeJsonData("登陆密码") time.sleep(1) token = get_token(login_url,username,password) # **************************** 交易部分 **************************** header = \ { "Authorization": "Bearer " + token, "Content-Type": "application/json" } boxNum = deepcopy(len(self.dict["#旧箱号"])) boxes = deepcopy(self.dict["#旧箱号"]) for i in range(boxNum): boxName = boxes[i] print("📦 第 %d 次扫描箱子,箱号为:%s" %(i+1,boxName)) params = \ { "bill_code": makeJsonData("#出库拣配单号"), "box_code": boxName, "phase": "BoxPhase", "platform": "pda", "sns": [] } params = json.dumps(params).replace("'","\"") self.result = myRequest(base_url, headers=header, data=params) # **************************** 校验部分 **************************** checkTheMessage("code",varNameInExcel="code") checkTheMessage("msg",varNameInExcel="msg") # **************************** 返回值部分 **************************** # 获取“token” global_config.set_value("TOKEN",token) # **************************** 常规部分 **************************** self.testResult = "成功" except Exception as e: self.testResult = "失败" raise e finally: # 在excel中写值脚本不可写入try/except,否则html报告中无法区别体现“失败”和“异常” global_config.set_value("TESTRESULT",self.testResult) self.terminateProcess = True loadProcessValue("#流程开关",realValue="拣配成功") writeTextResult(myRow=self.myRow)
def test01_get_boxes_info(self): ''' 登陆相应环境壳后,根据库存调整单查询拣配单及新旧箱子信息 ''' # **************************** 案例公共信息初始化 **************************** self.caseName = (lambda: sys._getframe(1).f_code.co_name)() global_config.set_value("CASENAME",self.caseName) login_url = self.url + getInterfaceData("登陆接口") base_url = self.url + getInterfaceData("调用接口") # 与库表中数据主键重复情况均需考虑是否用初始化 if getInterfaceData("是否数据库初始化") == "是": DB().delete(tableName,deleteData) try: # **************************** 登陆部分 **************************** username = makeJsonData("经办登录名") password = makeJsonData("登陆密码") token = get_token(login_url,username,password) # **************************** 交易部分 **************************** header = \ { "Authorization": "Bearer " + token, "Content-Type": "application/json" } params = \ { "code": makeJsonData("库存调整单") } params = json.dumps(params).replace("'","\"") self.result = myRequest(base_url, headers=header, data=params) # **************************** 校验部分 **************************** checkTheMessage("code",varNameInExcel="code") checkTheMessage("msg",varNameInExcel="msg") # **************************** 返回值部分 **************************** # 获取新旧箱子信息及拣配单信息 jianpidanhao = combineJson(self.result,"rst","data","info","outer","code") loadProcessValue("#出库拣配单号",realValue=jianpidanhao) global_config.set_value("#出库拣配单号",jianpidanhao) oldBoxesInfo = eval(combineJson(self.result, "rst", "outerMaterials", "out")) boxArray = [] for i in range(len(oldBoxesInfo)): boxArray.append(oldBoxesInfo[i]["code"]) loadProcessValue("#旧箱号",realValue=str(boxArray)) global_config.set_value("#旧箱号", boxArray) # 获取调整类型代码 adjustType = combineJson(self.result,"rst","data","type") global_config.set_value("#调整类型", adjustType) # 获取壳登陆信息 global_config.set_value("TOKEN", token) # **************************** 常规部分 **************************** self.testResult = "成功" except Exception as e: self.testResult = "失败" raise e finally: # 在excel中写值脚本不可写入try/except,否则html报告中无法区别体现“失败”和“异常” global_config.set_value("TESTRESULT",self.testResult) writeTextResult()