使用Python將xmind腦圖轉(zhuǎn)成excel用例的實(shí)現(xiàn)代碼(一)
最近接到一個(gè)領(lǐng)導(dǎo)需求,將xmind腦圖直接轉(zhuǎn)成可以導(dǎo)入的excel用例,并且轉(zhuǎn)換成gui可執(zhí)行的exe文件,方便他人使用。
因?yàn)閷?duì)Python比較熟悉,所以就想使用Python3來(lái)實(shí)現(xiàn)這個(gè)功能,先理一下思路,首先要將xmind轉(zhuǎn)換成Python可用的數(shù)據(jù)格式,正好找到了一個(gè)xmindparser庫(kù)可以做這個(gè)事情,然后就好辦了,用xlwt庫(kù)寫(xiě)成xls文件,再用Python自帶的gui庫(kù) tkinter來(lái)寫(xiě) gui界面,最后用pyinstaller來(lái)打包。
計(jì)劃分兩個(gè)py文件來(lái)寫(xiě),一個(gè)文件寫(xiě)excel ,一個(gè)文件寫(xiě)gui界面,因?yàn)樾枰獙?dǎo)入的字段比較多,而且導(dǎo)入的格式有嚴(yán)格的要求,所以寫(xiě)excel的邏輯還是有點(diǎn)復(fù)雜的,所以我們確定xmind的文件有相應(yīng)的格式來(lái)寫(xiě),測(cè)試編號(hào) 測(cè)試需求 測(cè)試用例標(biāo)題 測(cè)試用例執(zhí)行步驟 測(cè)試用例預(yù)期結(jié)果 測(cè)試用例預(yù)置條件都要按照相應(yīng)的格式來(lái)。格式如圖

通過(guò)xmindparser解析出來(lái)的格式是這樣的,是Python的字典加列表的格式

from xmindparser import xmind_to_dict
import re
import xlwt
class xmind_to_xls():
def xmind_num(self,value):
"""獲取xmind標(biāo)題個(gè)數(shù)"""
try:
return len(value['topics'])
except KeyError:
return 0
def xmind_title(self,value):
"""獲取xmind標(biāo)題內(nèi)容"""
return value['title']
def xmind_cat(self,filename):
'''調(diào)試函數(shù),打印內(nèi)容用的'''
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文件函數(shù)'''
self.f=xlwt.Workbook()
self.sheet1 =self.f.add_sheet('sheet1',cell_overwrite_ok=True)
self.row0 = ["storyid", '需求名稱(chēng)', '測(cè)試用例名稱(chēng)', '執(zhí)行步驟', '預(yù)期結(jié)果', '服務(wù)名稱(chēng)', '版本', '執(zhí)行人員']
#生成第一行
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 #用例計(jì)算器
z = 0 # 用例結(jié)果數(shù)計(jì)數(shù)器
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)#正則取出用例編號(hào)
#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) #每個(gè)用例的步驟數(shù)量
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) #用例步驟名稱(chēng)
self.teststep_num=self.xmind_num(self.testcase_step) #用例步驟個(gè)數(shù)
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)#用例結(jié)果
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名稱(chēng)取xmind主題名稱(chēng)
if __name__ == '__main__':
xmind_file = "C:\\Users\\Administrator\\Desktop\\版本測(cè)試.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)
到此這篇關(guān)于使用Python將xmind腦圖轉(zhuǎn)成excel用例的實(shí)現(xiàn)代碼(一)的文章就介紹到這了,更多相關(guān)Python xmind轉(zhuǎn)excel用例內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python3中函數(shù)參數(shù)的四種簡(jiǎn)單用法
這篇文章主要介紹了python3中函數(shù)參數(shù)的四種簡(jiǎn)單用法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-07-07
基于Python實(shí)現(xiàn)的車(chē)牌識(shí)別系統(tǒng)
本文將以基于Python的車(chē)牌識(shí)別系統(tǒng)實(shí)現(xiàn)為方向,介紹車(chē)牌識(shí)別技術(shù)的基本原理、常用算法和方法,并詳細(xì)講解如何利用Python語(yǔ)言實(shí)現(xiàn)一個(gè)完整的車(chē)牌識(shí)別系統(tǒng),需要的朋友可以參考下2023-10-10
pandas初學(xué)者容易犯的六個(gè)錯(cuò)誤總結(jié)
Pandas是Python的一個(gè)數(shù)據(jù)分析包,該工具為解決數(shù)據(jù)分析任務(wù)而創(chuàng)建,Pandas納入大量庫(kù)和標(biāo)準(zhǔn)數(shù)據(jù)模型,提供高效的操作數(shù)據(jù)集所需的工具,這篇文章主要給大家介紹了總結(jié)介紹了pandas初學(xué)者容易犯的六個(gè)錯(cuò)誤,需要的朋友可以參考下2021-10-10
利用python操作SQLite數(shù)據(jù)庫(kù)及文件操作詳解
這篇文章主要給大家介紹了關(guān)于利用python操作SQLite數(shù)據(jù)庫(kù)及文件操作的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-09-09
Pandas?多進(jìn)程處理數(shù)據(jù)提高速度
這篇文章主要介紹了Pandas?多進(jìn)程處理數(shù)據(jù)提高速度,Pandas多進(jìn)程的方法,pandarallel?庫(kù),下面具體的測(cè)試方法,需要的朋友可以參考一下,希望對(duì)你的學(xué)習(xí)有所幫助2022-04-04
Python繼承和子類(lèi)從Person到Student演示實(shí)例
這篇文章主要為大家介紹了Python繼承和子類(lèi)從Person到Student演示實(shí)例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10

