Пример #1
0
def upFiles(item_fixture, resource, filePath):
    '''
    封装上传文件方法,要求传二个参数,上传成功返回文件UUID
    item_fixture:item fixture
    resource:请求的地址
    filePath:要上传的文件,相对于项目根目录,如 data/Doc/Lubango20191205.docx
    :return: 返回文件uuid
    '''
    file = base_utils.file_is_exist(filePath)
    try:
        response = item_fixture.request('post',
                                        resource,
                                        files={'file': open(file, 'rb')})
        return response["Response_body"]
    except Exception as e:
        raise FileNotFoundError(f"上传文件失败,错误原因:{e}")
Пример #2
0
    def xml_val(file_path):
        try:
            file = file_is_exist(file_path)
            if Path(file).suffix == ".xml":
                # 打开XML文档
                tree = ET.parse(file)
                # 获得文档根节点
                root = tree.getroot()
                # 获取当前节点标签的所有属性信息,并会以字典形式输出
                result = root.attrib
                return result
            else:
                raise RuntimeError("The file format must be xml")

        except BaseException as e:
            print("解析失败!", str(e))
 def test_completion_form(self, gaolu_login, gaolu_login_luban,
                          gaolu_login_report, env_conf):
     with allure.step("查看标段"):
         # section_dict = return_section_dict(gaolu_login, env_conf['用例配置']['主页']['section'])
         section_K = return_section_dict(gaolu_login)
         # 获取Kxx 下所有元素
         section_home_arr = return_section_array(
             gaolu_login, section_K, env_conf['用例配置']['主页']['section'])
         # 获取3级节点的详细信息
         pid_1 = get_section_home_id(section_home_arr,
                                     env_conf['用例配置']['主页']['项目节点'])
         # 获4级节点的详细信息
         pid_2 = get_data(section_home_arr, pid_1,
                          env_conf['用例配置']['主页']['文件节点'])
         # 获5级节点的详细信息
         data_temp = get_data(section_home_arr, pid_2['id'],
                              env_conf['用例配置']['主页']['subItem'])
         # 组装为{"name":"id"}
         section_dict = assemble_dict(data_temp)
     with allure.step("获取资料模板条目列表"):
         resp_temp = Data_template().pageDataTemplateItemUsingGET(
             gaolu_login_luban, page_size=10000, page_index=1)
         for data in resp_temp.get('source_response')['data']['result']:
             if data['name'] == env_conf['用例配置']['主页']['父表单']:
                 template_id1 = data['formTemplateId']
                 template_db_id1 = data['templateCode']
     with allure.step('获取roleName'):
         resp = UserInfo().getUserInfoUsingGET(gaolu_login)
         fullName = resp.get('source_response')['data']['fullName']
     with allure.step('获取发起人用户信息: {0}'.format(fullName)):
         get_userName = Roleandrole().findUsersUsingGET(gaolu_login_luban)
         userinfo_datas = get_userName.get('source_response')['data']
         userIdList = None
         for data in userinfo_datas:
             if data['truename'] == fullName:
                 userIdList = data['id']
     # 检验评定添加父表单
     with allure.step('获取原始主页数据'):
         summary_org = get_summary_value(gaolu_login,
                                         env_conf['用例配置']['主页']['section'])
         summary_bySection_org = get_summary_bySection_value(
             gaolu_login, env_conf['用例配置']['主页']['section'])
         summary_byUnit_org = get_summary_byUnit_value(
             gaolu_login, env_conf['用例配置']['主页']['section'],
             env_conf['用例配置']['主页']['项目节点'])
         new_task_org = get_new_tasks_value(gaolu_login)
         # todo = get_todo_value(gaolu_login, userIdList)
         task_org = get_trace_value(gaolu_login, userIdList)
     with allure.step('添加父表单: {0}'.format(env_conf['用例配置']['主页']['父表单'])):
         add_parent_sheet_body = {
             "templateId": template_id1,
             "projectNodeId":
             section_dict[env_conf['用例配置']['主页']['subItem']],
             "templateDbId": int(template_db_id1),
             "classifier": "test_construction"
         }
         resp_add_parent_sheet = FormGroup().addFormGroupsPOST(
             gaolu_login, add_parent_sheet_body)
         waitForStatus(resp_add_parent_sheet, 200, 200, 15)
         href_formGroup = resp_add_parent_sheet.get(
             'response_header')['Location']
         formGroup_id = href_formGroup.split('/')[-1]
     with allure.step("断言添加父表单: {0} 成功".format(
             env_conf['用例配置']['主页']['父表单'])):
         add_sheet_result = {
             "classifier": "test_construction",
             "projection": "excerpt",
             "projectNodeId":
             section_dict[env_conf['用例配置']['主页']['subItem']]
         }
         group_resp = FormGroup().formGroupsGET(gaolu_login,
                                                add_sheet_result)
         id_templateName_dict = {}
         edit_hrefs = {}
         ids = {}
         templateId_ids = {}
         for data in group_resp.get(
                 'source_response')['data']['_embedded']['formGroups']:
             id_templateName_dict[str(data['id'])] = data['templateName']
             edit_hrefs[str(
                 data['id'])] = data['instance']['_links']['edit']['href']
             ids[str(data['id'])] = data['instance']['id']
             templateId_ids[str(data['id'])] = data['templateId']
         Assertions.assert_equal_value(id_templateName_dict[formGroup_id],
                                       env_conf['用例配置']['主页']['父表单'])
     with allure.step('获取现在主页表单数据'):
         summary_new1 = get_summary_value(gaolu_login,
                                          env_conf['用例配置']['主页']['section'])
     with allure.step('断言未发起数量变化'):
         except_value = int(summary_org['未发起'])
         actual_value = int(summary_new1['未发起'])
         if except_value - 200 <= actual_value <= except_value + 200:
             assert True
         else:
             assert False, f'实际值为:{actual_value},预期值为:{except_value}'
     with allure.step("获取表单内容"):
         pattern = re.compile(r'[?]id=[A-Za-z0-9]{1,}')
         result = pattern.findall(edit_hrefs[formGroup_id])
         edit_id = result[0].split('=')[1]
         ServiceTemplate().rbTemplateGET(gaolu_login_report,
                                         templateId_ids[formGroup_id])
         ServiceTemplate().rbInstanceGET(gaolu_login_report, edit_id)
         with open('data/测试表6.2.2-2 干砌挡土墙分项工程质量检验评定表(JL).json',
                   'r',
                   encoding='utf8') as fp:
             json_data = json.load(fp)
         body = {
             "id": edit_id,
             "name": id_templateName_dict[formGroup_id],
             "templateId": templateId_ids[formGroup_id],
             "data": json_data
         }
     with allure.step("获取提交表单id"):
         submit_resp = ServiceTemplate().rbInstancePUT(
             gaolu_login_report, edit_id, body)
         waitForStatus(submit_resp, 200, 200, 15)
         base_utils.file_is_exist(env_conf['用例配置']['主页']['文件路径'])
         resp = Content().contentGET(gaolu_login, ids[formGroup_id])
     with allure.step("提交表单内容"):
         res = Content().contentPOST(
             gaolu_login,
             resp.get('source_response')['data']['id'],
             env_conf['用例配置']['主页']['文件路径'], 'application/pdf')
         waitForStatus(res, 200, 200, 15)
     with allure.step("发起审批"):
         time = datetime.datetime.now().strftime('%Y-%m-%d')
         body = {"deadline": time, "assignee": userIdList}
         start_approve = ApprovalProcess().starApprovePOST(
             gaolu_login, body, ids[formGroup_id])
         waitForStatus(start_approve, 200, 200, 15)
     with allure.step("断言发起审批成功"):
         status = check_status(
             gaolu_login, formGroup_id,
             section_dict[env_conf['用例配置']['主页']['subItem']])
         Assertions.assert_equal_value(status, 'PROCESSING')
     with allure.step('获取-表单(总)数据统计-数据'):
         summary_new2 = get_summary_value(gaolu_login,
                                          env_conf['用例配置']['主页']['section'])
     with allure.step('断言-表单(总)数据统计-审批中-数量变化'):
         except_value = int(summary_org['审批中'])
         actual_value = int(summary_new2['审批中'])
         if except_value - 200 <= actual_value <= except_value + 200:
             assert True
         else:
             assert False, f'实际值为:{actual_value},预期值为:{except_value}'
     with allure.step('获取-项目概况-数据'):
         summary_byUnit_new1 = get_summary_byUnit_value(
             gaolu_login, env_conf['用例配置']['主页']['section'],
             env_conf['用例配置']['主页']['项目节点'])
     with allure.step('断言-项目概况-评定中-数量变化'):
         except_value = int(summary_byUnit_org['评定中'])
         actual_value = int(summary_byUnit_new1['评定中'])
         if except_value - 200 <= actual_value <= except_value + 200:
             assert True
         else:
             assert False, f'实际值为:{actual_value},预期值为:{except_value}'
     with allure.step('获取-我的代发-数据'):
         except_value = new_task_org
         actual_value = get_new_tasks_value(gaolu_login)
         if except_value - 200 <= actual_value <= except_value + 200:
             assert True
         else:
             assert False, f'实际值为:{actual_value},预期值为:{except_value}'
     with allure.step("审批一"):
         body = {
             "deadline": time,
             "comment": "test",
             "assignee": userIdList
         }
         pass_approve = ApprovalProcess().passApprovePOST(
             gaolu_login, body, ids[formGroup_id])
         waitForStatus(pass_approve, 200, 200, 15)
     with allure.step("审批二"):
         body = {
             "deadline": time,
             "comment": "test",
             "assignee": userIdList
         }
         pass_approve = ApprovalProcess().passApprovePOST(
             gaolu_login, body, ids[formGroup_id])
         waitForStatus(pass_approve, 200, 200, 15)
     with allure.step("审批完成"):
         status = check_status(
             gaolu_login, formGroup_id,
             section_dict[env_conf['用例配置']['主页']['subItem']])
         Assertions.assert_equal_value(status, 'COMPLETED')
     with allure.step('获取-表单(总)数据统计-数据'):
         summary_new3 = get_summary_value(gaolu_login,
                                          env_conf['用例配置']['主页']['section'])
         summary_bySection_new = get_summary_bySection_value(
             gaolu_login, env_conf['用例配置']['主页']['section'])
     with allure.step('断言-表单(总)数据统计-已完成-数量变化'):
         except_value = int(summary_org['已完成'])
         actual_value = int(summary_new3['已完成'])
         if except_value - 200 <= actual_value <= except_value + 200:
             assert True
         else:
             assert False, f'实际值为:{actual_value},预期值为:{except_value}'
     with allure.step('断言-项目数据统计-已评定-数量变化'):
         except_value = int(summary_bySection_org['已评定'])
         actual_value = int(summary_bySection_new['已评定'])
         if except_value - 20 <= actual_value <= except_value + 20:
             assert True
         else:
             assert False, f'实际值为:{actual_value},预期值为:{except_value}'
     with allure.step('获取-项目概况-数据'):
         summary_byUnit_new2 = get_summary_byUnit_value(
             gaolu_login, env_conf['用例配置']['主页']['section'],
             env_conf['用例配置']['主页']['项目节点'])
     with allure.step('断言-项目概况-已评定-数量变化'):
         except_value = int(summary_byUnit_org['已评定'])
         actual_value = int(summary_byUnit_new2['已评定'])
         if except_value - 200 <= actual_value <= except_value + 200:
             assert True
         else:
             assert False, f'实际值为:{actual_value},预期值为:{except_value}'
     with allure.step('获取-我的已办-数据'):
         except_value = task_org
         actual_value = get_trace_value(gaolu_login, userIdList)
         if except_value - 200 <= actual_value <= except_value + 200:
             assert True
         else:
             assert False, f'实际值为:{actual_value},预期值为:{except_value}'
     with allure.step('删除父表单'):
         delete_sheet1 = FormGroup().deleteFormGroupsDELETE(
             gaolu_login, formGroup_id)
         waitForStatus(delete_sheet1, 200, 200, 15)
Пример #4
0
 def test_attach_up_download_delete(self, gaolu_login, gaolu_login_luban,
                                    gaolu_login_report, env_conf):
     with allure.step("查看标段"):
         section_K = return_section_dict(gaolu_login)
         # 获取Kxx 下所有元素
         section_home_arr = return_section_array(
             gaolu_login, section_K,
             env_conf['用例配置']['表单审批']['表单附件']['section'])
         # 获取3级节点的详细信息
         pid_1 = get_section_home_id(
             section_home_arr, env_conf['用例配置']['表单审批']['表单附件']['项目节点'])
         # 获4级节点的详细信息
         pid_2 = get_data(section_home_arr, pid_1,
                          env_conf['用例配置']['表单审批']['表单附件']['文件节点'])
         # 获5级节点的详细信息
         data_temp = get_data(section_home_arr, pid_2['id'],
                              env_conf['用例配置']['表单审批']['表单附件']['subItem'])
         # 组装为{"name":"id"}
         section_dict = assemble_dict(data_temp)
     with allure.step("获取资料模板条目列表"):
         resp_temp = Data_template().pageDataTemplateItemUsingGET(
             gaolu_login_luban, page_size=10000, page_index=1)
         for data in resp_temp.get('source_response')['data']['result']:
             if data['name'] == env_conf['用例配置']['表单审批']['表单附件']['父表单']:
                 template_id1 = data['formTemplateId']
                 template_db_id1 = data['templateCode']
     with allure.step('获取roleName'):
         resp = UserInfo().getUserInfoUsingGET(gaolu_login)
         fullName = resp.get('source_response')['data']['fullName']
     with allure.step('获取发起人用户信息: {0}'.format(fullName)):
         get_userName = Roleandrole().findUsersUsingGET(gaolu_login_luban)
         userinfo_datas = get_userName.get('source_response')['data']
         userIdList = None
         for data in userinfo_datas:
             if data['truename'] == fullName:
                 userIdList = data['id']
     # 检验评定添加父表单
     with allure.step('添加父表单: {0}'.format(
             env_conf['用例配置']['表单审批']['表单附件']['父表单'])):
         add_parent_sheet_body = {
             "templateId":
             template_id1,
             "projectNodeId":
             section_dict[env_conf['用例配置']['表单审批']['表单附件']['subItem']],
             "templateDbId":
             int(template_db_id1),
             "classifier":
             "report"
         }
         resp_add_parent_sheet = FormGroup().addFormGroupsPOST(
             gaolu_login, add_parent_sheet_body)
         waitForStatus(resp_add_parent_sheet, 200, 200, 15)
         href_formGroup = resp_add_parent_sheet.get(
             'response_header')['Location']
         formGroup_id = href_formGroup.split('/')[-1]
     with allure.step("断言添加父表单: {0} 成功".format(
             env_conf['用例配置']['表单审批']['表单附件']['父表单'])):
         add_sheet_result = {
             "classifier":
             "report",
             "projection":
             "excerpt",
             "projectNodeId":
             section_dict[env_conf['用例配置']['表单审批']['表单附件']['subItem']]
         }
         group_resp = FormGroup().formGroupsGET(gaolu_login,
                                                add_sheet_result)
         id_templateName_dict = {}
         for data in group_resp.get(
                 'source_response')['data']['_embedded']['formGroups']:
             id_templateName_dict[str(data['id'])] = data['templateName']
         Assertions.assert_equal_value(
             id_templateName_dict[formGroup_id],
             env_conf['用例配置']['表单审批']['表单附件']['父表单'])
     with allure.step('添加子表单'):
         body = {
             "classifier":
             "report",
             "projection":
             "excerpt",
             "projectNodeId":
             section_dict[env_conf['用例配置']['表单审批']['表单附件']['subItem']]
         }
         formGroup_resp_dict = {}
         formGroup_resp = FormGroup().formGroupsGET(gaolu_login, body)
         for data in formGroup_resp.get(
                 'source_response')['data']['_embedded']['formGroups']:
             formGroup_resp_dict[str(
                 data['id'])] = data['_links']['self']['href']
         sheet_name = "测试表单" + base_utils.generate_random_str()
         sheet_body = {
             "name": sheet_name,
             "toFormInstance": "",
             "formGroup": formGroup_resp_dict[formGroup_id]
         }
         resp_child = FormInstances().formInstancesPOST(
             gaolu_login, sheet_body)
         waitForStatus(resp_child, 200, 200, 15)
         print('添加子表单: {0} 成功'.format(sheet_name))
     with allure.step('获取子表单templateId'):
         node = env_conf['用例配置']['表单审批']['表单附件']['subItem']
         body = return_InstanceBody(gaolu_login, section_dict, node,
                                    formGroup_id)
         res = FormInstances().formInstanceSearchGET(gaolu_login, body)
         templateId_ids = {}
         ids = {}
         edit_hrefs = {}
         for data in res.get(
                 'source_response')['data']['_embedded']['formInstances']:
             if data['name'] == sheet_name:
                 templateId_ids[data['name']] = data['templateId']
                 ids[data['name']] = data['id']
                 edit_hrefs[data['name']] = data['_links']['edit']['href']
     with allure.step("获取表单内容"):
         pattern = re.compile(r'[?]id=[A-Za-z0-9]{1,}')
         result = pattern.findall(edit_hrefs[sheet_name])
         edit_id = result[0].split('=')[1]
         ServiceTemplate().rbTemplateGET(gaolu_login_report,
                                         templateId_ids[sheet_name])
         content_resp = ServiceTemplate().rbInstanceGET(
             gaolu_login_report, edit_id)
         body = content_resp.get('source_response')['data']
     with allure.step("获取提交表单id"):
         submit_resp = ServiceTemplate().rbInstancePUT(
             gaolu_login_report, edit_id, body)
         waitForStatus(submit_resp, 200, 200, 15)
         base_utils.file_is_exist(env_conf['用例配置']['表单审批']['表单附件']['文件路径'])
         os.rename(env_conf['用例配置']['表单审批']['表单附件']['文件路径'],
                   "data/" + sheet_name + ".pdf")
         resp = Content().contentGET(gaolu_login, ids[sheet_name])
     with allure.step("提交表单内容"):
         res = Content().contentPOST(
             gaolu_login,
             resp.get('source_response')['data']['id'],
             "data/" + sheet_name + ".pdf", 'application/pdf')
         os.rename("data/" + sheet_name + ".pdf",
                   env_conf['用例配置']['表单审批']['表单附件']['文件路径'])
         waitForStatus(res, 200, 200, 15)
     with allure.step("上传附件png"):
         body = {"source": "upload"}
         res_up = Content().documentsPOST(gaolu_login, body)
         waitForStatus(res_up, 200, 200, 15)
         href_formGroup = res_up.get('response_header')['Location']
         get_id = href_formGroup.split('/')[-1]
         res_id = Content().documentsGET(gaolu_login, get_id)
         href = res_id.get(
             'source_response')['data']['_links']['content']['href']
         up_id = href.split('/')[-1]
         res = Content().contentPOST(
             gaolu_login, up_id, env_conf['用例配置']['表单审批']['表单附件']['图片附件'],
             'image/png')
         waitForStatus(res, 200, 200, 15)
         document_hef = res_id.get(
             'source_response')['data']['_links']['document']['href']
         res_bind = FormInstances().attachmentsPUT(gaolu_login,
                                                   document_hef,
                                                   ids[sheet_name], 'text')
         waitForStatus(res_bind, 200, 200, 15)
     with allure.step('下载附件png'):
         down_resp = Content().downcontentGET(gaolu_login, up_id)
         with open('data/down_png.png', 'wb') as code:
             code.write(down_resp.get('Response_content'))
     with allure.step('删除附件png'):
         delete_bind = FormInstances().attachmentsPUT(
             gaolu_login, '', ids[sheet_name], 'text')
         waitForStatus(delete_bind, 200, 200, 15)
     with allure.step("删除子表单"):
         delete_sheet = Sort().formInstancesDELETE(gaolu_login,
                                                   ids[sheet_name])
         waitForStatus(delete_sheet, 200, 200, 15)
     with allure.step('删除父表单'):
         delete_group_sheet = FormGroup().deleteFormGroupsDELETE(
             gaolu_login, formGroup_id)
         waitForStatus(delete_group_sheet, 200, 200, 15)
Пример #5
0
    def test_approve_batch_form(self, gaolu_login, gaolu_login_luban,
                                gaolu_login_report, env_conf):
        with allure.step("查看标段"):
            section_K = return_section_dict(gaolu_login)
            # 获取Kxx 下所有元素
            section_home_arr = return_section_array(
                gaolu_login, section_K,
                env_conf['用例配置']['表单审批']['批量表单']['section'])
            # 获取3级节点的详细信息
            pid_1 = get_section_home_id(
                section_home_arr, env_conf['用例配置']['表单审批']['批量表单']['项目节点'])
            # 获4级节点的详细信息
            pid_2 = get_data(section_home_arr, pid_1,
                             env_conf['用例配置']['表单审批']['批量表单']['文件节点'])
            # 获5级节点的详细信息
            data_temp = get_data(section_home_arr, pid_2['id'],
                                 env_conf['用例配置']['表单审批']['批量表单']['subItem'])
            # 组装为{"name":"id"}
            section_dict = assemble_dict(data_temp)
        with allure.step("获取资料模板条目列表"):
            resp_temp = Data_template().pageDataTemplateItemUsingGET(
                gaolu_login_luban, page_size=10000, page_index=1)
            for data in resp_temp.get('source_response')['data']['result']:
                if data['name'] == env_conf['用例配置']['表单审批']['批量表单']['父表单']:
                    template_id1 = data['formTemplateId']
                    template_db_id1 = data['templateCode']
        with allure.step('获取roleName'):
            resp = UserInfo().getUserInfoUsingGET(gaolu_login)
            fullName = resp.get('source_response')['data']['fullName']
        with allure.step('获取发起人用户信息: {0}'.format(fullName)):
            get_userName = Roleandrole().findUsersUsingGET(gaolu_login_luban)
            userinfo_datas = get_userName.get('source_response')['data']
            userIdList = None
            for data in userinfo_datas:
                if data['truename'] == fullName:
                    userIdList = data['id']
            # 检验评定添加父表单
        with allure.step('添加父表单: {0}'.format(
                env_conf['用例配置']['表单审批']['批量表单']['父表单'])):
            add_parent_sheet_body = {
                "templateId":
                template_id1,
                "projectNodeId":
                section_dict[env_conf['用例配置']['表单审批']['批量表单']['subItem']],
                "templateDbId":
                int(template_db_id1),
                "classifier":
                "report"
            }
            resp_add_parent_sheet = FormGroup().addFormGroupsPOST(
                gaolu_login, add_parent_sheet_body)
            waitForStatus(resp_add_parent_sheet, 200, 200, 15)
            href_formGroup = resp_add_parent_sheet.get(
                'response_header')['Location']
            formGroup_id = href_formGroup.split('/')[-1]
        with allure.step("断言添加父表单: {0} 成功".format(
                env_conf['用例配置']['表单审批']['批量表单']['父表单'])):
            add_sheet_result = {
                "classifier":
                "report",
                "projection":
                "excerpt",
                "projectNodeId":
                section_dict[env_conf['用例配置']['表单审批']['批量表单']['subItem']]
            }
            group_resp = FormGroup().formGroupsGET(gaolu_login,
                                                   add_sheet_result)
            id_templateName_dict = {}
            for data in group_resp.get(
                    'source_response')['data']['_embedded']['formGroups']:
                id_templateName_dict[str(data['id'])] = data['templateName']
            Assertions.assert_equal_value(
                id_templateName_dict[formGroup_id],
                env_conf['用例配置']['表单审批']['批量表单']['父表单'])
        with allure.step('批量添加子表单'):
            body = {
                "classifier":
                "report",
                "projection":
                "excerpt",
                "projectNodeId":
                section_dict[env_conf['用例配置']['表单审批']['批量表单']['subItem']]
            }
            formGroup_resp_dict = {}
            formGroup_resp = FormGroup().formGroupsGET(gaolu_login, body)
            for data in formGroup_resp.get(
                    'source_response')['data']['_embedded']['formGroups']:
                formGroup_resp_dict[str(
                    data['id'])] = data['_links']['self']['href']

            sheet_name1 = "测试表单" + base_utils.generate_random_str()
            sheet_name2 = "测试表单" + base_utils.generate_random_str()

            sheet_body1 = {
                "name": sheet_name1,
                "toFormInstance": "",
                "formGroup": formGroup_resp_dict[formGroup_id]
            }
            sheet_body2 = {
                "name": sheet_name2,
                "toFormInstance": "",
                "formGroup": formGroup_resp_dict[formGroup_id]
            }
            resp_child1 = FormInstances().formInstancesPOST(
                gaolu_login, sheet_body1)
            waitForStatus(resp_child1, 200, 200, 15)
            print('添加子表单: {0} 成功'.format(sheet_name1))
            resp_child2 = FormInstances().formInstancesPOST(
                gaolu_login, sheet_body2)
            waitForStatus(resp_child2, 200, 200, 15)
            print('添加子表单: {0} 成功'.format(sheet_name2))
        with allure.step('获取子表单templateId'):
            node = env_conf['用例配置']['表单审批']['批量表单']['subItem']
            body = return_InstanceBody(gaolu_login, section_dict, node,
                                       formGroup_id)
            res = FormInstances().formInstanceSearchGET(gaolu_login, body)
            templateId_ids = {}
            ids = {}
            edit_hrefs = {}
            for data in res.get(
                    'source_response')['data']['_embedded']['formInstances']:
                templateId_ids[data['name']] = data['templateId']
                ids[data['name']] = data['id']
                edit_hrefs[data['name']] = data['_links']['edit']['href']
        with allure.step("获取表单内容"):
            pattern = re.compile(r'[?]id=[A-Za-z0-9]{1,}')
            result1 = pattern.findall(edit_hrefs[sheet_name1])
            result2 = pattern.findall(edit_hrefs[sheet_name2])
            edit_id1 = result1[0].split('=')[1]
            edit_id2 = result2[0].split('=')[1]
            ServiceTemplate().rbTemplateGET(gaolu_login_report,
                                            templateId_ids[sheet_name1])
            ServiceTemplate().rbTemplateGET(gaolu_login_report,
                                            templateId_ids[sheet_name2])
            content_resp1 = ServiceTemplate().rbInstanceGET(
                gaolu_login_report, edit_id1)
            content_resp2 = ServiceTemplate().rbInstanceGET(
                gaolu_login_report, edit_id2)
            body1 = content_resp1.get('source_response')['data']
            body2 = content_resp2.get('source_response')['data']
        with allure.step("获取提交表单id1"):
            submit_resp1 = ServiceTemplate().rbInstancePUT(
                gaolu_login_report, edit_id1, body1)
            waitForStatus(submit_resp1, 200, 200, 15)
            base_utils.file_is_exist(env_conf['用例配置']['表单审批']['批量表单']['文件路径'])
            os.rename(env_conf['用例配置']['表单审批']['批量表单']['文件路径'],
                      "data/" + sheet_name1 + ".pdf")
            resp1 = Content().contentGET(gaolu_login, ids[sheet_name1])
        with allure.step("提交表单1内容"):
            res1 = Content().contentPOST(
                gaolu_login,
                resp1.get('source_response')['data']['id'],
                "data/" + sheet_name1 + ".pdf", 'application/pdf')
            waitForStatus(res1, 200, 200, 15)
            os.rename("data/" + sheet_name1 + ".pdf",
                      env_conf['用例配置']['表单审批']['批量表单']['文件路径'])
        with allure.step("获取提交表单id2"):
            submit_resp2 = ServiceTemplate().rbInstancePUT(
                gaolu_login_report, edit_id2, body2)
            waitForStatus(submit_resp2, 200, 200, 15)
            base_utils.file_is_exist(env_conf['用例配置']['表单审批']['批量表单']['文件路径'])
            os.rename(env_conf['用例配置']['表单审批']['批量表单']['文件路径'],
                      "data/" + sheet_name2 + ".pdf")
            resp2 = Content().contentGET(gaolu_login, ids[sheet_name2])
        with allure.step("提交表单2内容"):
            res2 = Content().contentPOST(
                gaolu_login,
                resp2.get('source_response')['data']['id'],
                "data/" + sheet_name2 + ".pdf", 'application/pdf')
            waitForStatus(res2, 200, 200, 15)
            os.rename("data/" + sheet_name2 + ".pdf",
                      env_conf['用例配置']['表单审批']['批量表单']['文件路径'])
        with allure.step("创建委托实例"):
            node = env_conf['用例配置']['表单审批']['批量表单']['subItem']
            body = return_InstanceBody(gaolu_login, section_dict, node,
                                       formGroup_id)
            res = FormInstances().formInstanceSearchGET(gaolu_login, body)
            datas = res.get(
                'source_response')['data']['_embedded']['formInstances']
            id_newDelegate = {}
            for data in datas:
                id_newDelegate[
                    data['name']] = data['_links']['newDelegate']['href']
            pprint.pprint(id_newDelegate)
            formInstances = [
                id_newDelegate[sheet_name1], id_newDelegate[sheet_name2]
            ]
            newDelegate_body = {"formInstances": formInstances}
            resp_create = DelegatesForm().createFormDelegatesPOST(
                gaolu_login, newDelegate_body)
            href_Delegate = resp_create.get('response_header')['Location']
            Delegate_id = href_Delegate.split('/')[-1]
        with allure.step("发起审批"):
            time = datetime.datetime.now().strftime('%Y-%m-%d')
            body = {"deadline": time, "assignee": userIdList}
            start_approve = ApprovalProcess().starApprovePOST(
                gaolu_login, body, ids[sheet_name1])
            waitForStatus(start_approve, 200, 200, 15)
            ApprovalProcess().starApprovePOST(gaolu_login, Delegate_id)
        with allure.step("断言发起审批成功"):
            node = env_conf['用例配置']['表单审批']['批量表单']['subItem']
            result_body = return_InstanceBody(gaolu_login, section_dict, node,
                                              formGroup_id)
            res = FormInstances().formInstanceSearchGET(
                gaolu_login, result_body)
            for data in res.get(
                    'source_response')['data']['_embedded']['formInstances']:
                if data['name'] == sheet_name1:
                    status1 = data['status']
                elif data['name'] == sheet_name2:
                    status2 = data['status']
            Assertions.assert_equal_value(status1, 'PROCESSING')
            Assertions.assert_equal_value(status2, 'PROCESSING')
        with allure.step("审批"):
            body = {
                "deadline": time,
                "comment": "test",
                "assignee": userIdList
            }
            pass_approve = ApprovalProcess().passApprovePOST(
                gaolu_login, body, ids[sheet_name1])
            waitForStatus(pass_approve, 200, 200, 15)
        with allure.step("查询可退回步骤ID"):
            return_step = ApprovalProcess().returnApproveGET(
                gaolu_login, ids[sheet_name1])
            data_arr = return_step.get('source_response')['data']
            for data in data_arr:
                if data['name'] == '发起人':
                    step1 = data['id']
                else:
                    step2 = data['id']
        with allure.step("退回一步"):
            body = {"stepId": step2, "deadline": time, "comment": "pre_step"}
            return_step2 = ApprovalProcess().returnApprovePOST(
                gaolu_login, body, ids[sheet_name1])
            waitForStatus(return_step2, 200, 200, 15)
        with allure.step("断言退回一步成功"):
            node = env_conf['用例配置']['表单审批']['批量表单']['subItem']
            result_body = return_InstanceBody(gaolu_login, section_dict, node,
                                              formGroup_id)
            res = FormInstances().formInstanceSearchGET(
                gaolu_login, result_body)
            for data in res.get(
                    'source_response')['data']['_embedded']['formInstances']:
                if data['name'] == sheet_name1:
                    status1 = data['status']
                    status2 = data['status']
            Assertions.assert_equal_value(status1, 'RETURN')
            Assertions.assert_equal_value(status2, 'RETURN')
        with allure.step("退回到未发起"):
            body = {"stepId": step1, "deadline": time, "comment": "pre"}
            return_step1 = ApprovalProcess().returnApprovePOST(
                gaolu_login, body, ids[sheet_name1])
            waitForStatus(return_step1, 200, 200, 15)
        with allure.step("断言退回到未发起成功"):
            node = env_conf['用例配置']['表单审批']['批量表单']['subItem']
            result_body = return_InstanceBody(gaolu_login, section_dict, node,
                                              formGroup_id)
            res = FormInstances().formInstanceSearchGET(
                gaolu_login, result_body)
            for data in res.get(
                    'source_response')['data']['_embedded']['formInstances']:
                if data['name'] == sheet_name1:
                    status1 = data['status']
                elif data['name'] == sheet_name2:
                    status2 = data['status']
            Assertions.assert_equal_value(status1, 'UNSTART')
            Assertions.assert_equal_value(status2, 'UNSTART')
        with allure.step("删除子表单"):
            delete_sheet1 = Sort().formInstancesDELETE(gaolu_login,
                                                       ids[sheet_name1])
            waitForStatus(delete_sheet1, 200, 200, 15)
            delete_sheet2 = Sort().formInstancesDELETE(gaolu_login,
                                                       ids[sheet_name2])
            waitForStatus(delete_sheet2, 200, 200, 15)
        with allure.step('删除父表单'):
            delete_group_sheet = FormGroup().deleteFormGroupsDELETE(
                gaolu_login, formGroup_id)
            waitForStatus(delete_group_sheet, 200, 200, 15)
Пример #6
0
    def test_advance_form(self, gaolu_login, gaolu_login_luban,
                          gaolu_login_report, env_conf):
        with allure.step("查看标段"):
            section_K = return_section_dict(gaolu_login)
            # 获取Kxx 下所有元素
            section_home_arr = return_section_array(
                gaolu_login, section_K, env_conf['用例配置']['高级表单']['section'])
            # 获取3级节点的详细信息
            pid_1 = get_section_home_id(section_home_arr,
                                        env_conf['用例配置']['高级表单']['项目节点'])
            # 获4级节点的详细信息
            pid_2 = get_data(section_home_arr, pid_1,
                             env_conf['用例配置']['高级表单']['文件节点'])
            # 获5级节点的详细信息
            data_temp = get_data(section_home_arr, pid_2['id'],
                                 env_conf['用例配置']['高级表单']['subItem'])
            # 组装为{"name":"id"}
            section_dict = assemble_dict(data_temp)
        with allure.step("获取资料模板条目列表"):
            resp_temp = Data_template().pageDataTemplateItemUsingGET(
                gaolu_login_luban, page_size=10000, page_index=1)
            for data in resp_temp.get('source_response')['data']['result']:
                if data['name'] == env_conf['用例配置']['高级表单']['父表单']:
                    template_id1 = data['formTemplateId']
                    template_db_id1 = data['templateCode']
        # 检验评定添加父表单
        with allure.step('添加父表单: {0}'.format(env_conf['用例配置']['高级表单']['父表单'])):
            add_parent_sheet_body = {
                "templateId": template_id1,
                "projectNodeId":
                section_dict[env_conf['用例配置']['高级表单']['subItem']],
                "templateDbId": int(template_db_id1),
                "classifier": "report"
            }
            resp_add_parent_sheet = FormGroup().addFormGroupsPOST(
                gaolu_login, add_parent_sheet_body)
            waitForStatus(resp_add_parent_sheet, 200, 200, 15)
            href_formGroup = resp_add_parent_sheet.get(
                'response_header')['Location']
            formGroup_id = href_formGroup.split('/')[-1]
        with allure.step("断言添加父表单: {0} 成功".format(
                env_conf['用例配置']['高级表单']['父表单'])):
            add_sheet_result = {
                "classifier": "report",
                "projection": "excerpt",
                "projectNodeId":
                section_dict[env_conf['用例配置']['高级表单']['subItem']]
            }
            group_resp = FormGroup().formGroupsGET(gaolu_login,
                                                   add_sheet_result)
            id_templateName_dict = {}
            for data in group_resp.get(
                    'source_response')['data']['_embedded']['formGroups']:
                id_templateName_dict[str(data['id'])] = data['templateName']
            Assertions.assert_equal_value(id_templateName_dict[formGroup_id],
                                          env_conf['用例配置']['高级表单']['父表单'])
        with allure.step('添加子表单'):
            body = {
                "classifier": "report",
                "projection": "excerpt",
                "projectNodeId":
                section_dict[env_conf['用例配置']['高级表单']['subItem']]
            }
            formGroup_resp_dict = {}
            formGroup_resp = FormGroup().formGroupsGET(gaolu_login, body)
            for data in formGroup_resp.get(
                    'source_response')['data']['_embedded']['formGroups']:
                formGroup_resp_dict[str(
                    data['id'])] = data['_links']['self']['href']

            sheet_name = "测试表单" + base_utils.generate_random_str()
            sheet_body = {
                "name": sheet_name,
                "toFormInstance": "",
                "formGroup": formGroup_resp_dict[formGroup_id]
            }
            resp_child = FormInstances().formInstancesPOST(
                gaolu_login, sheet_body)
            waitForStatus(resp_child, 200, 200, 15)
            print('添加子表单: {0} 成功'.format(sheet_name))
        with allure.step('获取子表单templateId'):
            node = env_conf['用例配置']['高级表单']['subItem']
            body = return_InstanceBody(gaolu_login, section_dict, node,
                                       formGroup_id)
            res = FormInstances().formInstanceSearchGET(gaolu_login, body)
            templateId_ids = {}
            ids = {}
            edit_hrefs = {}
            for data in res.get(
                    'source_response')['data']['_embedded']['formInstances']:
                templateId_ids[data['name']] = data['templateId']
                ids[data['name']] = data['id']
                edit_hrefs[data['name']] = data['_links']['edit']['href']
        with allure.step("获取表单内容"):
            pattern = re.compile(r'[?]id=[A-Za-z0-9]{1,}')
            result = pattern.findall(edit_hrefs[sheet_name])
            edit_id = result[0].split('=')[1]
            ServiceTemplate().rbTemplateGET(gaolu_login_report,
                                            templateId_ids[sheet_name])
            content_resp = ServiceTemplate().rbInstanceGET(
                gaolu_login_report, edit_id)
            body = content_resp.get('source_response')['data']
        with allure.step("获取提交表单id"):
            submit_resp = ServiceTemplate().rbInstancePUT(
                gaolu_login_report, edit_id, body)
            waitForStatus(submit_resp, 200, 200, 15)
            base_utils.file_is_exist(env_conf['用例配置']['高级表单']['文件路径'])
            os.rename(env_conf['用例配置']['高级表单']['文件路径'],
                      "data/" + sheet_name + ".pdf")
            resp = Content().contentGET(gaolu_login, ids[sheet_name])
        with allure.step("提交表单内容"):
            res = Content().contentPOST(
                gaolu_login,
                resp.get('source_response')['data']['id'],
                "data/" + sheet_name + ".pdf", 'application/pdf')
            os.rename("data/" + sheet_name + ".pdf",
                      env_conf['用例配置']['高级表单']['文件路径'])
            waitForStatus(res, 200, 200, 15)
        with allure.step("删除子表单"):
            delete_sheet3 = Sort().formInstancesDELETE(gaolu_login,
                                                       ids[sheet_name])
            waitForStatus(delete_sheet3, 200, 200, 15)
        with allure.step('删除父表单'):
            delete_sheet1 = FormGroup().deleteFormGroupsDELETE(
                gaolu_login, formGroup_id)
            waitForStatus(delete_sheet1, 200, 200, 15)