도 실시 예와 엑셀 변환 파이썬을 사용하여 뇌 xmind (a)

       최근 수요 주도, 뇌도 직접 엑셀 사용 사례로 변환 xmind 도입 및 사용에 다른 사람을 위해, GUI EXE 실행 파일로 변환 할 수 있습니다.

       때문에 파이썬의 나는이 기능을 구현하기 위해 파이썬을 사용할 수 있도록 먼저 이발 아이디어, 우선 파이썬으로 변환 가능한 데이터 형식을 xmind 단지 xmindparser 라이브러리는이 일을 할 수 발견, 쉽게 처리 할 수있는, 더 잘 알고, xlwt 라이브러리 XLS 파일로 작성하고 파이썬은 쓰기에 GUI GUI 인터페이스 라이브러리는 Tkinter를 제공하고, 마지막으로 pyInstaller 중에 함께 포장 할 수 있습니다.

        두 평 파일을 작성하는 계획은, 파일 쓰기 엑셀은, 수입, 수입 및 형식에 더 많은 필드가 엄격한 요구 사항이 있기 때문에 우리가 결정 그래서, 그래서, 엑셀 논리가 아직도 조금 복잡하다, 쓰기, 파일 GUI 인터페이스를 쓰기 xmind 파일은 결과를 사전 테스트 조건이 적절한 형식에 따라야 예상 시험의 경우 시험 제목 테스트 케이스 실행 단계의 요구 사항 번호를 테스트, 테스트, 쓰기에 적절한 형식을 가지고있다. 의 형식

   xmindparser 분석 형식으로 같은입니다 형식 플러스 파이썬의 사전의 목록

 
여기에서 우리는 우리가 콘텐츠 제목을 원하는 우리가 사용하는 xmind 형식, 제목과 주제, 밖으로 두 가지 특성을 분석 할 수 있습니다, 내용은 여기에 두 가지 기능을 함께 제공 할 수있다 항목의 수, 내가 게시 된 코드입니다 때문에 XLS 형식의 요구 사항은 동일하지의 
지금의 특정 로직뿐만 아니라 특히 쓰기에, 나는 쓰기에 우리의 수입 도구의 설치 요구 사항을 해요, 당신은 당신의 참조를 제공 할 수 있습니다
from xmindparser import xmind_to_dict
import re
import xlwt

class xmind_to_xls():
    def xmind_num(self,value):
        """获取xmind标题个数"""
        try:
            return len(value['topics'])
        except KeyError:
            return 0

    def xmind_title(self,value):
        """获取xmind标题内容"""
        return value['title']

    def  xmind_cat(self,filename):
        '''调试函数,打印内容用的'''
        self.out = xmind_to_dict(filename)
        self.story = self.out[0]['topic']['topics']
        self.num=len(self.story)
        print(self.out)
        print(self.out[0]['topic']['title'])
        return self.story,self.num

    def write_excel(self,xmind_file,servicename='',editionname='',performer=''):
        '''生成excel文件函数'''
        self.f=xlwt.Workbook()
        self.sheet1 =self.f.add_sheet('sheet1',cell_overwrite_ok=True)
        self.row0 = ["storyid", '需求名称', '测试用例名称', '执行步骤', '预期结果', '服务名称', '版本', '执行人员']
        #生成第一行
        for i in range(0,len(self.row0)):
            self.sheet1.write(0,i,self.row0[i])
        self.out = xmind_to_dict(xmind_file)
        self.xls_name=self.out[0]['topic']['title']
        self.story = self.out[0]['topic']['topics']
        self.storynum = len(self.story)
        j=1 #用例计算器
        z = 0  # 用例结果数计数器
        for i in range(0, self.storynum):
            self.storyname = self.story[i]['title']
            print(self.storyname)
            self.regex_str = ".*[\[【](.+?)[\]】].*"
            self.storyid_reg = re.match(self.regex_str, self.storyname)
            if self.storyid_reg:
                self.storyid=self.storyid_reg.group(1)#正则取出用例编号
                #print(self.storyid_reg.group(1)) 
            self.testcase_num=self.xmind_num(self.story[i]['topics'][0])
            for k in range(0,self.testcase_num):
                self.testcase=self.story[i]['topics'][0]['topics'][k]
                self.testcase_name =self.xmind_title(self.testcase)
                self.testcase_stepnum=self.xmind_num(self.testcase) #每个用例的步骤数量
                self.sheet1.write(k + i + z + j, 2, self.testcase_name)
                self.sheet1.write(k + i + z + j, 0, self.storyid)
                self.sheet1.write(k + i + z + j, 1, self.storyname)
                self.sheet1.write(k + i + z + j, 5, servicename)
                self.sheet1.write(k + i + z + j, 6, editionname)
                self.sheet1.write(k + i + z + j, 7, performer)
                for x  in range(0,self.testcase_stepnum):
                    self.testcase_step=self.testcase['topics'][x]
                    self.teststep_title=self.xmind_title(self.testcase_step) #用例步骤名称
                    self.teststep_num=self.xmind_num(self.testcase_step) #用例步骤个数
                    if self.teststep_num != 0:
                        for y in range(0,self.teststep_num):
                            self.test_results=self.testcase_step['topics'][y]
                            self.test_result=self.xmind_title(self.test_results)#用例结果
                            self.sheet1.write(k + i + z + j+y+1, 3, self.teststep_title)
                            self.sheet1.write(k + i + z + j + y+1, 4, self.test_result)
                        z = z + y+1
                    else:
                        self.test_result=' '
                        self.sheet1.write(k + i + z + j+1  , 3, self.teststep_title)
                        self.sheet1.write(k + i + z + j+1 , 4, self.test_result)
                        z = z + 1
            j=j+k
        self.f.save(self.xls_name+'.xls') #xls名称取xmind主题名称

if __name__ == '__main__':
     xmind_file = "C:\\Users\\Administrator\\Desktop\\版本测试.xmind"  # xmind文件
     servicename='aa'
     editionname='bb'
     performer='cc'
     #xmind_to_xls().write_excel(xmind_file,servicename,editionname,performer)
     xmind_to_xls().xmind_cat(xmind_file)

  

추천

출처www.cnblogs.com/xu-xu/p/11999960.html