1. 程式人生 > 程式設計 >使用python把xmind轉換成excel測試用例的實現程式碼

使用python把xmind轉換成excel測試用例的實現程式碼

前言

因為寫好了測試xmind腦圖後,然後再編寫測試用例,實在是太麻煩了,所以我寫了一點測試用例後,就網上百度了下,怎麼直接把xmind腦圖轉換成excel測試用例,純個人學習筆記

本文參考:
https://www.jb51.net/article/197246.htm

https://www.jb51.net/article/197249.htm


提示:以下是本篇文章正文內容,下面可供參考

一、確定好自己的xmind的用例格式

因為xmind的格式關係到編寫程式碼的邏輯關係,所以需要先確定好自己的xmind的格式,本人學習時使用的格式如下:

聯絡專案

二、xmindparser庫的使用

1.下載庫

預設下載最新庫,在配好環境python環境變數的前提下,cmd中輸入如下命令:

pip install xmindparser

或直接在pycharm中,點選左上角“File” > Settings(或者直接Ctrl+Alt+s) > Project:你的專案名稱 > Python Interpreter > + > 搜尋xmindparser > Install Package

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述

2.xmindparser的使用

程式碼如下(示例):

from xmindparser import xmind_to_dict
import json

xm = xmind_to_dict("sulinkAPP.xmind")[0]['topic']

# indent為顯示json格式,ensure_ascii未顯示為中文,不顯示ASCII碼
print(json.dumps(xm,indent=2,ensure_ascii=False)) 

執行結果顯示為:

{
 "title": "sulinkAPP","topics": [{
 "title": "登入","topics": [{
  "title": "正向用例","topics": [{
  "title": "正確的手機號碼一鍵登入","topics": [{
   "title": "進入‘登入/註冊'頁面","topics": [{
   "title": "成功進入‘登入/註冊'頁面"
   }]
  },{
   "title": "選中‘我已閱讀並同意使用者協議',點選‘本機號碼一鍵登入'","topics": [{
   "title": "進入‘手機快捷登入頁面'"
   }]
  },{
   "title": "點選‘一鍵登入'","topics": [{
   "title": "登入成功,跳轉至‘我的'頁面"
   }]
  }]
  },{
  "title": "正確的手機號碼及驗證碼登入",{
   "title": "點選‘其他登入方式'","topics": [{
   "title": "成功進入‘手機登入'頁面"
   }]
  },{
   "title": "選擇正確的區號,輸入正確的手機號碼,點選‘獲取驗證碼'","topics": [{
   "title": "提示‘驗證碼已傳送',並正確收到驗證碼"
   }]
  },{
   "title": "正確輸入收到的驗證碼,選中‘我已閱讀並同意使用者協議',點選登入","topics": [{
   "title": "登入成功,跳轉至‘我的'頁面"
   }]
  }]
  }]
 }]
 }]
}

三、xlwt庫的使用

1.下載xlwt庫

預設下載最新庫,在配好環境python環境變數的前提下,cmd中輸入如下命令:

pip install xlwt

或如同xmindparser一樣,在pycharm中下載

2.xlwt庫的簡單使用

簡單的使用如下:

import xlwt # 匯入模組

workbook = xlwt.Workbook(encoding='utf-8') # 建立workbook 物件
worksheet = workbook.add_sheet('sheet1') # 建立工作表sheet
worksheet.write(0,'hello') # 往表中寫內容,第一各引數 行,第二個引數列,第三個引數內容
workbook.save('students.xls') # 儲存表為students.xls

詳細的使用,可以參照此文章:https://www.jb51.net/article/154535.htm

四、讀取xmind資料並寫入excel表格中

1.簡單的建立一個用例excel表格,並寫入第一行資料

程式碼如下

import xlwt # 匯入模組
from xmindparser import xmind_to_dict

xm = xmind_to_dict("sulinkAPP.xmind")[0]['topic']	# 讀取xmind資料
workbook = xlwt.Workbook(encoding='utf-8') # 建立workbook物件
worksheet = workbook.add_sheet(xm["title"],cell_overwrite_ok=True) # 建立工作表,並設定可以重寫單元格內容
row0 = ["testcaseid",'需求名稱','測試用例名稱','執行步驟','預期結果','服務名稱','版本','執行人員']	# 寫成excel表格用例的要素

for i in range(len(row0)):
 worksheet.write(0,i,row0[i])

2.讀取xmind資料,然後寫入上面表格中

在上面的程式碼的基礎上新增點,把xmind資料寫入excel表格中

import xlwt # 匯入模組
from xmindparser import xmind_to_dict

xm = xmind_to_dict("sulinkAPP.xmind")[0]['topic']	# 讀取xmind資料
workbook = xlwt.Workbook(encoding='utf-8') # 建立workbook物件
worksheet = workbook.add_sheet(xm["title"],row0[i])

x = 0 # 寫入資料的當前行數
z = 0 # 用例的編號
for i in range(len(xm["topics"])):
 test_module = xm["topics"][i]
 for j in range(len(test_module["topics"])):
 test_suit = test_module["topics"][j]
 for k in range(len(test_suit["topics"])):
  test_case = test_suit["topics"][k]
  z += 1
  c1 = len(test_case["topics"])	# 執行步驟有幾個
  for n in range(len(test_case["topics"])):
  x += 1
  test_step = test_case["topics"][n]
  test_except = test_step["topics"][0]
  worksheet.write(x,4,f"{n + 1}." + test_except["title"])	# 預期結果
  worksheet.write(x,3,f"{n + 1}." + test_step["title"]) # 執行步驟
  worksheet.write_merge(x - c1 + 1,x,z) # testcaseid
  worksheet.write_merge(x - c1 + 1,1,test_module["title"]) # 測試需求名稱
  worksheet.write_merge(x - c1 + 1,2,test_case["title"]) # 測試用例名稱
workbook.save(xm["title"] + ".xls") # xls名稱取xmind主題名稱

執行結果如下:
使用python把xmind轉換成excel測試用例的實現程式碼

3.調整下表格的格式

在上面的程式碼的基礎上修改下,簡單的增加表格的樣式

import xlwt # 匯入模組
from xmindparser import xmind_to_dict
def styles():
 """設定單元格的樣式的基礎方法"""
 style = xlwt.XFStyle()
 return style


def borders(status=1):
 """設定單元格的邊框
 細實線:1,小粗實線:2,細虛線:3,中細虛線:4,大粗實線:5,雙線:6,細點虛線:7大粗虛線:8,細點劃線:9,粗點劃線:10,細雙點劃線:11,粗雙點劃線:12,斜點劃線:13"""
 border = xlwt.Borders()
 border.left = status
 border.right = status
 border.top = status
 border.bottom = status
 return border


def heights(worksheet,line,size=4):
 """設定單元格的高度"""
 worksheet.row(line).height_mismatch = True
 worksheet.row(line).height = size*256


def widths(worksheet,size=11):
 """設定單元格的寬度"""
 worksheet.col(line).width = size*256


def alignments(**kwargs):
 """設定單元格的對齊方式
 status有兩種:horz(水平),vert(垂直)
 horz中的direction常用的有:CENTER(居中),DISTRIBUTED(兩端),GENERAL,CENTER_ACROSS_SEL(分散),RIGHT(右邊),LEFT(左邊)
 vert中的direction常用的有:CENTER(居中),BOTTOM(下方),TOP(上方)"""
 alignment = xlwt.Alignment()

 if "horz" in kwargs.keys():
 alignment.horz = eval(f"xlwt.Alignment.HORZ_{kwargs['horz'].upper()}")
 if "vert" in kwargs.keys():
 alignment.vert = eval(f"xlwt.Alignment.VERT_{kwargs['vert'].upper()}")
 alignment.wrap = 1 # 設定自動換行
 return alignment


def fonts(name='宋體',bold=False,underline=False,italic=False,colour='black',height=11):
 """設定單元格中字型的樣式
 預設字型為宋體,不加粗,沒有下劃線,不是斜體,黑色字型"""
 font = xlwt.Font()
 # 字型
 font.name = name
 # 加粗
 font.bold = bold
 # 下劃線
 font.underline = underline
 # 斜體
 font.italic = italic
 # 顏色
 font.colour_index = xlwt.Style.colour_map[colour]
 # 大小
 font.height = 20 * height
 return font


def patterns(colors=1):
 """設定單元格的背景顏色,該數字表示的顏色在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 main():
 xm = xmind_to_dict("sulinkAPP.xmind")[0]['topic']
 # print(json.dumps(xm,ensure_ascii=False)) # indent為顯示json格式,ensure_ascii為顯示為中文,不顯示ASCII碼
 workbook = xlwt.Workbook(encoding='utf-8') # 建立workbook物件
 worksheet = workbook.add_sheet(xm["title"],cell_overwrite_ok=True) # 建立工作表
 row0 = ["testcaseid",'執行人員']
 sizes = [10,11,30,60,50,11]
 dicts = {"horz": "CENTER","vert": "CENTER"}

 style2 = styles()
 style2.alignment = alignments(**dicts)
 style2.font = fonts()
 style2.borders = borders()
 style2.pattern = patterns(7)
 heights(worksheet,0)
 for i in range(len(row0)):
 worksheet.write(0,row0[i],style2)
 widths(worksheet,size=sizes[i])

 style = styles()
 style.borders = borders()

 x = 0 # 寫入資料的當前行數
 z = 0 # 用例的編號
 for i in range(len(xm["topics"])):
 test_module = xm["topics"][i]
 for j in range(len(test_module["topics"])):
  test_suit = test_module["topics"][j]
  for k in range(len(test_suit["topics"])):
  test_case = test_suit["topics"][k]
  z += 1
  c1 = len(test_case["topics"]) # 執行步驟有幾個
  for n in range(len(test_case["topics"])):
   x += 1
   test_step = test_case["topics"][n]
   test_except = test_step["topics"][0]
   worksheet.write(x,f"{n + 1}." + test_except["title"],style) # 預期結果
   worksheet.write(x,f"{n + 1}." + test_step["title"],style) # 執行步驟
  worksheet.write_merge(x - c1 + 1,z,style) # testcaseid
  worksheet.write_merge(x - c1 + 1,test_module["title"],style) # 測試需求名稱
  worksheet.write_merge(x - c1 + 1,test_case["title"],style) # 測試用例名稱

 workbook.save(xm["title"] + ".xls") # xls名稱取xmind主題名稱


if __name__ == "__main__":
 main()

執行結果如下:

在這裡插入圖片描述

4.封裝方法

上面的程式碼基本已經完成了,但是為了更好看,程式碼可讀性更高,所以封裝下方法

# -*- coding:utf-8 -*-

from xmindparser import xmind_to_dict
import xlwt


class XlwtSeting(object):

 @staticmethod # 靜態方法裝飾器,使用此裝飾器裝飾後,可以直接使用類名.方法名呼叫(XlwtSeting.styles()),並且不需要self引數
 def template_one(worksheet):
 dicts = {"horz": "CENTER","vert": "CENTER"}
 sizes = [15,15,45,15]

 se = XlwtSeting()
 style = se.styles()
 style.alignment = se.alignments(**dicts)
 style.font = se.fonts(bold=True)
 style.borders = se.borders()
 style.pattern = se.patterns(7)
 se.heights(worksheet,0)
 for i in range(len(sizes)):
  se.widths(worksheet,size=sizes[i])
 return style

 @staticmethod
 def template_two():
 dicts2 = {"vert": "CENTER"}
 se = XlwtSeting()
 style = se.styles()
 style.borders = se.borders()
 style.alignment = se.alignments(**dicts2)
 return style

 @staticmethod
 def styles():
 """設定單元格的樣式的基礎方法"""
 style = xlwt.XFStyle()
 return style

 @staticmethod
 def borders(status=1):
 """設定單元格的邊框,
 細實線:1,小粗實線:2,細虛線:3,中細虛線:4,大粗實線:5,雙線:6,細點虛線:7大粗虛線:8,細點劃線:9,粗點劃線:10,細雙點劃線:11,粗雙點劃線:12,斜點劃線:13"""
 border = xlwt.Borders()
 border.left = status
 border.right = status
 border.top = status
 border.bottom = status
 return border

 @staticmethod
 def heights(worksheet,size=4):
 """設定單元格的高度"""
 worksheet.row(line).height_mismatch = True
 worksheet.row(line).height = size * 256

 @staticmethod
 def widths(worksheet,size=11):
 """設定單元格的寬度"""
 worksheet.col(line).width = size * 256

 @staticmethod
 def alignments(wrap=1,**kwargs):
 """設定單元格的對齊方式,
 :接收一個對齊引數的字典{"horz": "CENTER","vert": "CENTER"}horz(水平),vert(垂直)
 :horz中的direction常用的有:CENTER(居中),LEFT(左邊)
 :vert中的direction常用的有:CENTER(居中),TOP(上方)"""
 alignment = xlwt.Alignment()

 if "horz" in kwargs.keys():
  alignment.horz = eval(f"xlwt.Alignment.HORZ_{kwargs['horz'].upper()}")
 if "vert" in kwargs.keys():
  alignment.vert = eval(f"xlwt.Alignment.VERT_{kwargs['vert'].upper()}")
 alignment.wrap = wrap # 設定自動換行
 return alignment

 @staticmethod
 def fonts(name='宋體',height=11):
 """設定單元格中字型的樣式,
 預設字型為宋體,不加粗,沒有下劃線,不是斜體,黑色字型"""
 font = xlwt.Font()
 # 字型
 font.name = name
 # 加粗
 font.bold = bold
 # 下劃線
 font.underline = underline
 # 斜體
 font.italic = italic
 # 顏色
 font.colour_index = xlwt.Style.colour_map[colour]
 # 大小
 font.height = 20 * height
 return font

 @staticmethod
 def patterns(colors=1):
 """設定單元格的背景顏色,該數字表示的顏色在xlwt庫的其他方法中也適用,預設顏色為白色
 0 = Black,the list goes on..."""
 pattern = xlwt.Pattern()
 pattern.pattern = xlwt.Pattern.SOLID_PATTERN
 pattern.pattern_fore_colour = colors
 return pattern


class XmindToXsl(XlwtSeting):

 def __init__(self,name):
 """呼叫類時,讀取xmind檔案,並生成excel表格"""
 try:
  self.xm = xmind_to_dict(name)[0]['topic']
 except Exception as e:
  print(f"開啟xmind檔案失敗:{e}")
 self.workbook = xlwt.Workbook(encoding='utf-8') # 建立workbook物件
 self.worksheet = self.workbook.add_sheet(self.xm["title"],cell_overwrite_ok=True) # 建立工作表

 def save(self,name):
 """儲存表格"""
 self.workbook.save(name + ".xls")

 @staticmethod
 def xmind_num(value):
 """獲取xmind標題個數"""
 try:
  return len(value["topics"])
 except KeyError:
  return 0

 @staticmethod
 def xmind_title(value):
 """獲取xmind標題內容"""
 return value["title"]

 def write_excel(self,result='',performer='',editionname=''):
 """生成excel檔案的方法"""
 row0 = ["testcaseid",'實際結果','執行人員','版本']
 style2 = self.template_one(self.worksheet)
 for i in range(len(row0)):
  self.worksheet.write(0,style2)

 style = self.template_two()

 x = 0 # 寫入資料的當前行數
 z = 0 # 用例的編號
 for i in range(self.xmind_num(self.xm)):
  test_module = self.xm["topics"][i]
  modnum = self.xmind_num(test_module)
  if modnum != 0:
  for j in range(modnum):
   test_suit = test_module["topics"][j]
   suit_num = self.xmind_num(test_suit)
   if suit_num != 0:
   for k in range(suit_num):
    test_case = test_suit["topics"][k]
    z += 1
    c1 = self.xmind_num(test_case) # 執行步驟有幾個
    if c1 != 0:
    for n in range(c1):
     x += 1
     test_step = test_case["topics"][n]
     test_except = test_step["topics"][0]
     self.heights(self.worksheet,size=2)
     step = f"{n + 1}." + self.xmind_title(test_step) # 執行步驟
     exce = f"{n + 1}." + self.xmind_title(test_except) # 預期結果
     self.worksheet.write(x,step,style) # 寫入執行步驟
     self.worksheet.write(x,exce,style) # 寫入預期結果
     self.worksheet.write(x,5,result,style) # 寫入實際結果
     self.worksheet.write(x,6,performer,style) # 寫入執行人
    mod = self.xmind_title(test_module) # 測試需求名稱
    case = self.xmind_title(test_case) # 測試用例名稱
    self.worksheet.write_merge(x - c1 + 1,style) # 寫入testcaseid
    self.worksheet.write_merge(x - c1 + 1,mod,style) # 寫入測試需求名稱
    self.worksheet.write_merge(x - c1 + 1,case,style) # 寫入測試用例名稱
    self.worksheet.write_merge(x - c1 + 1,7,editionname,style) # 寫入版本名稱
    else:
    print("測試用例沒有操作步驟及預期結果")
   else:
   print("沒有測試用例")
  else:
  print("沒有測試套件")

 self.save(self.xm["title"]) # 儲存

if __name__ == "__main__":
 names = "sulinkAPP.xmind"
 xx = XmindToXsl(names)
 xx.write_excel()

執行的結果如下:

使用python把xmind轉換成excel測試用例的實現程式碼

五、建立一個簡單的GUI頁面

1.簡單使用tkinter

因為不需要太複雜的GUI頁面,所以我直接使用的是python自帶的tkinter庫,先簡單瞭解下tkinter庫怎麼使用,參考文件:https://blog.csdn.net/qq_46018418/article/details/105927203

import tkinter

top = tkinter.Tk() # 生成主視窗
label = tkinter.Label(top,text='Hello,GUI') # 生成標籤
label.pack() # 將標籤新增到主視窗
button1 = tkinter.Button(top,text="text") # 生成按鈕1
button1.pack(side=tkinter.LEFT) # 將button1新增到top主視窗左邊
button1 = tkinter.Button(top,text="text2") # 生成按鈕2
button1.pack(side=tkinter.RIGHT) # 將button1新增到top主視窗左邊
top.mainloop() # 進入訊息迴圈(必需元件)

程式碼執行結果如下:

在這裡插入圖片描述

2.使用tkinter建立一個簡單的GUI頁面

先初步使用tkinter建立一個簡單的GUI頁面,初步瞭解tkinter的使用細節

import tkinter


def getvalue():
 """獲取文字框中資料"""
 global path
 re = path.get()
 print(re)


top = tkinter.Tk() # 生成主視窗
top.title("test") # 設定視窗的標題
top.geometry("350x250") # 設定視窗的大小
top.geometry('+800+350') # 設定窗口出現的位置
top.resizable(0,0) # 將視窗大小設定為不可變
label = tkinter.Label(top,text='目標路徑') # 生成一個標籤
label.grid(row=0,column=0) # 使用grid佈局,標籤顯示在第一行,第一列
path = tkinter.StringVar() # 生成一個StringVar 物件,來儲存下面輸入框中的內容
firstEntry = tkinter.Entry(top,textvariable=path) # 生成一個文字框,內容儲存在上面變數中
firstEntry.grid(row=0,column=1) # 使用grid佈局,文字框顯示在第一行,第二列

# 生成一個按鈕,按鈕上顯示文字為“test”,設定點選按鈕後,執行command後面的方法
# (注意:只寫方法名,儲存方法的位置,不能加上()來呼叫)例:getvalue,不能寫成getvalue()
clickButton = tkinter.Button(top,text="提交",command=getvalue)
clickButton.grid(row=0,column=2) # 使用grid佈局,按鈕顯示在第一行,第三列

top.mainloop() # 進入訊息迴圈(必需元件)

程式碼執行結果如下:
在這裡插入圖片描述

3.豐富GUI頁面元素

進一步使用tkinter,把之前封裝的方法需要的引數,看情況新增上GUI頁面中

import tkinter
from tkinter.filedialog import askopenfilename


def get_value():
 """獲取文字框中資料"""
 re = path.get()
 per = person.get()
 ver = version.get()
 print(f"地址:{re},測試人員:{per},測試版本:{ver}")


def select_path():
 """選擇要轉換成excel的xmind地址"""
 path_ = askopenfilename()
 path.set(path_)


top = tkinter.Tk() # 生成主視窗
top.title("test") # 設定視窗的標題
top.geometry("350x250") # 設定視窗的大小
top.geometry('+800+350') # 設定窗口出現的位置
top.resizable(0,0) # 將視窗大小設定為不可變

# 檔案的路徑
first_label = tkinter.Label(top,text='目標路徑:') # 生成一個標籤
first_label.grid(row=0,column=0) # 使用grid佈局,標籤顯示在第一行,第一列
path = tkinter.StringVar() # 生成一個StringVar 物件,來儲存下面輸入框中的內容
first_entry = tkinter.Entry(top,textvariable=path) # 生成一個文字框,內容儲存在上面變數中
first_entry.grid(row=0,column=1) # 使用grid佈局,文字框顯示在第一行,第二列
# 生成一個按鈕,按鈕上顯示文字為“test”,設定點選按鈕後,執行command後面的方法
# (注意:只寫方法名,儲存方法的位置,不能加上()來呼叫)例:get_value,不能寫成get_value()
way_button = tkinter.Button(top,text="路徑選擇",command=select_path)
way_button.grid(row=0,column=2) # 使用grid佈局,按鈕顯示在第一行,第三列

# 測試人員
second_label = tkinter.Label(top,text="執行人員:")
second_label.grid(row=1,column=0)
person = tkinter.StringVar()
second_entry = tkinter.Entry(top,textvariable=person)
second_entry.grid(row=1,column=1)

# 版本
third_label = tkinter.Label(top,text="測試版本:")
third_label.grid(row=2,column=0)
version = tkinter.StringVar()
third_entry = tkinter.Entry(top,textvariable=version)
third_entry.grid(row=2,column=1)

# 提交按鈕
f_btn = tkinter.Frame(top,bg='red') # 設定一個frame框架,並設定背景顏色為紅色
f_btn.place(x=0,y=205,width=350,height=45) # 設定框架的大小,及在top視窗顯示位置
submit_button = tkinter.Button(f_btn,command=get_value,width=49,height=2,bg="#00FFFF") # 設定按鈕的文字,呼叫方法,大小,顏色,顯示框架
submit_button.grid(row=0,column=2) # 使用grid佈局,按鈕顯示在第一行,第一列

# 進入訊息迴圈(必需元件)
top.mainloop()

程式碼執行結果如下:

在這裡插入圖片描述

4.封裝方法,關聯轉換方法

上面程式碼已經初步實現了所需的功能,下面進行封裝方法,關聯之前寫好的xmind轉換excel表格的方法

import tkinter
import re
from tkinter.filedialog import askopenfilename
from tkinter import messagebox

from xmindToExcel.xmind_to_xls import XmindToXsl


class MainUI(object):

 def __init__(self,title="sulink",geometrysize="350x250",geometry="+800+350"):
 self.top = tkinter.Tk() # 生成主視窗
 self.top.title(title) # 設定視窗的標題
 self.top.geometry(geometrysize) # 設定視窗的大小
 self.top.geometry(geometry) # 設定窗口出現的位置
 self.top.resizable(0,0) # 將視窗大小設定為不可變
 self.path = tkinter.StringVar() # 生成一個StringVar 物件,來儲存下面輸入框中的內容
 self.person = tkinter.StringVar()
 self.version = tkinter.StringVar()
		
		# 呼叫自己寫的create_widgets()方法
 self.create_widgets()

 def get_value(self):
 """獲取文字框中資料,並呼叫XmindToXsl類"""
 path = self.path.get()
 per = self.person.get()
 ver = self.version.get()
 print(f"地址:{path},測試人員:{per},測試版本:{ver}")
 regvalue = '.*\.xmind$'
 xmind_reg = re.match(regvalue,path)
 if xmind_reg:
  # xmind轉換成xls
  xmind_to_xls = XmindToXsl(path)
  xmind_to_xls.write_excel(performer=per,editionname=ver)
 else:
  messagebox.showinfo(title='提示',message='請選擇正確的xmind檔案,謝謝!')

 def select_path(self):
 """選擇要轉換成excel的xmind地址"""
 path_ = askopenfilename()
 self.path.set(path_)

 def create_widgets(self):
 	"""建立視窗中的各種元素"""
 # 檔案的路徑
 first_label = tkinter.Label(self.top,text='目標路徑:') # 生成一個標籤
 first_label.grid(row=0,column=0) # 使用grid佈局,標籤顯示在第一行,第一列

 first_entry = tkinter.Entry(self.top,textvariable=self.path) # 生成一個文字框,內容儲存在上面變數中
 first_entry.grid(row=0,column=1) # 使用grid佈局,文字框顯示在第一行,第二列
 way_button = tkinter.Button(self.top,command=self.select_path)
 way_button.grid(row=0,column=2) # 使用grid佈局,按鈕顯示在第一行,第三列

 # 測試人員
 second_label = tkinter.Label(self.top,text="執行人員:")
 second_label.grid(row=1,column=0)
 second_entry = tkinter.Entry(self.top,textvariable=self.person)
 second_entry.grid(row=1,column=1)

 # 版本
 third_label = tkinter.Label(self.top,text="測試版本:")
 third_label.grid(row=2,column=0)
 third_entry = tkinter.Entry(self.top,textvariable=self.version)
 third_entry.grid(row=2,column=1)

 # 提交按鈕
 f_btn = tkinter.Frame(self.top,bg='red') # 設定一個frame框架,並設定背景顏色為紅色
 f_btn.place(x=0,height=45) # 設定框架的大小,及在top視窗顯示位置
 submit_button = tkinter.Button(f_btn,command=self.get_value,bg="#00FFFF") # 設定按鈕的文字,呼叫方法,大小,顏色,顯示框架
 submit_button.grid(row=0,column=2) # 使用grid佈局,按鈕顯示在第一行,第一列

 # 進入訊息迴圈(必需元件)
 self.top.mainloop()


if __name__ == "__main__":
 mu = MainUI(title="sulinkAPP")

程式碼執行結果如下:

在這裡插入圖片描述
在這裡插入圖片描述

六、打包

1.下載安裝pyinstaller

下載安裝pyinstaller 庫,建議使用pip線上下載安裝,因為有較多依賴庫,pip下載安裝時,會自動安裝依賴庫

pip install pyinstaller

2.使用pyinstaller打包檔案

如編寫上面全部程式碼的環境為虛擬環境,則打包時需要在主環境安裝編寫時匯入的庫(如:xmindparser,xlwt),如果沒有使用虛擬環境,則不需重複安裝。
安裝好pyinstaller後,到專案的目錄下,執行cmd,輸入命令。

pyinstaller -F mainUI.py -p xmind_to_xls.py

-F 後是main檔案,-p 後是自己編寫的依賴py檔案,多個檔案使用;分隔。
在這裡插入圖片描述
在這裡插入圖片描述

因為是自己學習,所以直接把mainUI檔案當做main檔案。
注:如果執行打包後的exe檔案包,報“xlwt no find”之類的錯,請在主環境pip下載安裝對應的庫


# 總結 以上就是這幾天學習的結果,感覺還是學習到了不少東西,希望能夠幫助到你們

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