1. 程式人生 > 程式設計 >使用Python將xmind腦圖轉成excel用例的實現程式碼(一)

使用Python將xmind腦圖轉成excel用例的實現程式碼(一)

最近接到一個領導需求,將xmind腦圖直接轉成可以匯入的excel用例,並且轉換成gui可執行的exe檔案,方便他人使用。

因為對Python比較熟悉,所以就想使用Python3來實現這個功能,先理一下思路,首先要將xmind轉換成Python可用的資料格式,正好找到了一個xmindparser庫可以做這個事情,然後就好辦了,用xlwt庫寫成xls檔案,再用Python自帶的gui庫 tkinter來寫 gui介面,最後用pyinstaller來打包。

計劃分兩個py檔案來寫,一個檔案寫excel ,一個檔案寫gui介面,因為需要匯入的欄位比較多,而且匯入的格式有嚴格的要求,所以寫excel的邏輯還是有點複雜的,所以我們確定xmind的檔案有相應的格式來寫,測試編號 測試需求 測試用例標題 測試用例執行步驟 測試用例預期結果 測試用例預置條件都要按照相應的格式來。格式如圖

使用Python將xmind腦圖轉成excel用例的實現程式碼(一)

通過xmindparser解析出來的格式是這樣的,是Python的字典加列表的格式

使用Python將xmind腦圖轉成excel用例的實現程式碼(一)

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,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,self.teststep_title)
      self.sheet1.write(k + i + z + j+1,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)

到此這篇關於使用Python將xmind腦圖轉成excel用例的實現程式碼(一)的文章就介紹到這了,更多相關Python xmind轉excel用例內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!