Esempio n. 1
0
    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')
Esempio n. 2
0
def test_elm():
    db = DB()
    db.clear("order_push_record", "饿了么")
    r = Elm_Order()
    assert "ok" in r.elm_order()
    db.update("饿了么")
    db.close()
Esempio n. 3
0
def create_guest():
    db = DB()
    for table, data in datas.items():
        db.clear(table)
        for d in data:
            db.insert(table, d)
    db.close()
Esempio n. 4
0
def init_data():
    db = DB()
    for table, data in datas.items():
        db.clear(table)
        for d in data:
            db.insert(table, d)
    db.close()
Esempio n. 5
0
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)
Esempio n. 7
0
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()
Esempio n. 8
0
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()
Esempio n. 9
0
def test_meituan():
    '''美团下单'''
    db=DB()
    db.clear("order_push_record","美团")

    r = Meituan_Order()
    assert "ok" in r.meituan_order()
    db.update("美团")
    db.close()
Esempio n. 10
0
def test_baidu():
    '''百度下单'''
    db=DB()
    db.clear("fosordertranslog","百度")

    r=Baidu_Order()
    assert "error" in r.baidu_order()

    db.update("百度")
    db.close()
Esempio n. 11
0
    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()
Esempio n. 12
0
    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)
Esempio n. 13
0
    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()
Esempio n. 14
0
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()
Esempio n. 15
0
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()
Esempio n. 16
0
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()
Esempio n. 17
0
    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)
Esempio n. 18
0
    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()
Esempio n. 19
0
    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()
Esempio n. 20
0
    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()
Esempio n. 21
0
 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()
Esempio n. 23
0
    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)
Esempio n. 26
0
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()
Esempio n. 28
0
    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()
Esempio n. 29
0
    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)
Esempio n. 30
0
    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()