1. 程式人生 > 其它 >基於python實現xmind測試用例匯出excel格式

基於python實現xmind測試用例匯出excel格式

1.下載xmind-SDK原始碼

1.1地址

https://github.com/xmindltd/xmind-sdk-python

1.2安裝

執行安裝:python3 setup.py instal

# @Time    : 2021/7/21 12:21
# @Author : cici
"""
匯入xmindparser模組是為了解析xmind獲得字典列表
"""
import xmindparser
#匯入xlwt模組是為了建立excel並寫入資料的
import xlwt
#定義一個類
class Xmind2Excel():
#定義一個配置方法
def config(self):
# xmindparser匯出格式配置
xmindparser.config = {
'showTopicId': False, # 是否展示主題ID
'hideEmptyValue': True, # 是否隱藏空值
'showRelationship': True # 新增配置,是否展示節點關係
}
#定義一個解析xmind內容的方法
def xmind(self):
filePath = '/Users/july/Desktop/客戶端職能劃分.xmind'
# 解析成dict資料型別
# 獲取列表中的第1個字典中的topic:內容即包括一級標題在內的xmind內容,content行參
content = xmindparser.xmind_to_dict(filePath)[0]['topic']
#將content屬性返回給方法的呼叫處self
return content
#建立一個excel,並輸入表頭,然後對錶頭字型進行設定
def styles(self,bold,height):
# 初始化樣式,就是將excel樣式初始化一個物件,可以理解為對這個樣式類例項化物件style
style = xlwt.XFStyle()
# 為樣式建立字型,也是對字型類例項化物件front
font = xlwt.Font()
font.name = 'Times New Roman'
# 加粗
font.bold = bold
# 字型大小,20是基數不變,18是字型大小
font.height = 20 * height
# 將設定的字型,賦值給類物件
style.font = font
#將配置好的格式返回給呼叫處
return style
#建立背景色
def patterns(self,colors=23):
"""
設定單元格的背景顏色,該數字表示的顏色在xlwt庫的其他方法中也適用,預設顏色為白色
0 = Black, 1 = White,2 = Red, 3 = Green, 4 = Blue,5 = Yellow, 6 = Magenta, 7 = Cyan,
16 = Maroon, 17 = Dark Green,18 = Dark Blue, 19 = Dark Yellow ,almost brown), 20 = Dark Magenta,
21 = Teal, 22 = Light Gray,23 = Dark Gray, the list goes on...
"""
pattern = xlwt.Pattern()
pattern.pattern = xlwt.Pattern.SOLID_PATTERN
pattern.pattern_fore_colour = colors
return pattern
def buildExcel(self):
# 將styles方法中的格式賦值給新的物件,並將背景色方法賦值給給新的物件的背景色屬性=style2.pattern
style2 = self.styles(True, 18)
style2.pattern = self.patterns()
# 建立一個excel
self.workexcel = xlwt.Workbook(encoding='utf-8')
# 建立一個worksheet物件就是excel中的第一個表,第二個引數是指單元格是否允許重設定,為了防止重複對一個單元格寫入報錯,設定允許true
self.worksheet = self.workexcel.add_sheet('test1', cell_overwrite_ok=True)
# 設定worksheet每一列的寬度15列,range是不包含15的
for m in range(15):
first_col = self.worksheet.col(m)
first_col.width = 256 * 20
# 表頭
title = ['功能點', '前提條件', '執行步驟', '期望結果', '備註'] # 寫成excel表格用例的要素
# 列表長度6
num = len(title)
# for迴圈遍歷最大到5,從0開始不含6
for i in range(num):
# 往表格中填充表頭
## 第一個引數代表行,第二個引數是列,第三個引數是內容,第四個引數是格式呼叫styles2格式
self.worksheet.write(0, i, title[i], style2)
def writeExcel(self):
# 呼叫類內方法時,如果呼叫的方法內參數寫了self,那麼呼叫方法時需要使用self.方法名()來呼叫
xm = self.xmind()
print(xm)
x = 1 # 初始化行數
# 第一級topics
for a in range(len(xm["topics"])): # topics列表中只有一個{}
case1 = xm["topics"][a] # 獲取{}元祖給case1,元祖中有一級標題及下一級4個分支模組
print(x)
print(case1["title"]) # 第一級title
# 呼叫類內其他方法的屬性,需要在方法中建立self.屬性名,然後在需要呼叫的方法內部採用self.屬性名呼叫
self.worksheet.write(x,0,case1["title"],self.styles(False,15))
# 第二級topics
if len(case1) >= 2:
for b in range(len(case1["topics"])): # 元祖中的四個模組
case2 = case1["topics"][b] # 將case1四個模組中的第一個模組的title和topics都給case2,case2中有2個功能點
print(x)
print(case2["title"]) # 第二級模組
self.worksheet.write(x, 1, case2["title"], self.styles(False, 15))
x += 1
# 第三級topics
if len(case2) >= 2:
x -= 1
for c in range(len(case2["topics"])): # 第三級功能點
case3 = case2["topics"][
c] # 將case2中的第一個功能點給case3,case3中有3個步驟,第二遍case3中只有功能點2,不滿足len(case3)>=2
print(x)
print(case3["title"]) # 第三層功能點
self.worksheet.write(x, 2, case3["title"], self.styles(False, 15))
x += 1
# 第四級topics
if len(case3) >= 2:
x -= 1
for d in range(len(case3["topics"])):
case4 = case3["topics"][d] # 將case3中的第一個步驟給case4,case4中只有1個title
print(x)
print(case4["title"]) # 獲取第4層內容
self.worksheet.write(x, 3, case4["title"], self.styles(False, 15))
x += 1
# 第五級topics
if len(case4) >= 2:
x -= 1
for e in range(len(case4["topics"])):
case5 = case4["topics"][e]
print(x)
print(case5["title"])
self.worksheet.write(x, 4, case5["title"], self.styles(False, 15))
x += 1
if len(case5) >= 2:
x -= 1
for h in range(len(case5["topics"])):
case6 = case5["topics"][h]
print(x)
print(case6["title"])
self.worksheet.write(x, 5, case6["title"], self.styles(False, 15))
# 儲存workexcel檔名為testcase2,存在專案資料夾內
self.workexcel.save('testcase2.xls')
#self.worksheet.write_merge(1, 2, 0, 0, case1["title"])
#定義一個類物件,來呼叫類中的方法或者屬性
xmindexcel=Xmind2Excel()
#呼叫方法體中的配置
xmindexcel.config()
xmindexcel.buildExcel()
xmindexcel.writeExcel()
參考文件:https://www.jb51.net/article/197244.htm