日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

使用python把xmind轉(zhuǎn)換成excel測試用例的實現(xiàn)代碼

瀏覽:23日期:2022-07-08 15:34:53

前言

因為寫好了測試xmind腦圖后,然后再編寫測試用例,實在是太麻煩了,所以我寫了一點測試用例后,就網(wǎng)上百度了下,怎么直接把xmind腦圖轉(zhuǎn)換成excel測試用例,純個人學(xué)習(xí)筆記

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

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

提示:以下是本篇文章正文內(nèi)容,下面可供參考

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

因為xmind的格式關(guān)系到編寫代碼的邏輯關(guān)系,所以需要先確定好自己的xmind的格式,本人學(xué)習(xí)時使用的格式如下:

使用python把xmind轉(zhuǎn)換成excel測試用例的實現(xiàn)代碼

二、xmindparser庫的使用

1.下載庫

默認(rèn)下載最新庫,在配好環(huán)境python環(huán)境變量的前提下,cmd中輸入如下命令:

pip install xmindparser

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

使用python把xmind轉(zhuǎn)換成excel測試用例的實現(xiàn)代碼使用python把xmind轉(zhuǎn)換成excel測試用例的實現(xiàn)代碼使用python把xmind轉(zhuǎn)換成excel測試用例的實現(xiàn)代碼使用python把xmind轉(zhuǎn)換成excel測試用例的實現(xiàn)代碼

2.xmindparser的使用

代碼如下(示例):

from xmindparser import xmind_to_dictimport jsonxm = xmind_to_dict('sulinkAPP.xmind')[0][’topic’]# indent為顯示json格式,ensure_ascii未顯示為中文,不顯示ASCII碼print(json.dumps(xm, indent=2, ensure_ascii=False))

運(yùn)行結(jié)果顯示為:

{ 'title': 'sulinkAPP', 'topics': [{ 'title': '登錄', 'topics': [{ 'title': '正向用例', 'topics': [{ 'title': '正確的手機(jī)號碼一鍵登錄', 'topics': [{ 'title': '進(jìn)入‘登錄/注冊’頁面', 'topics': [{ 'title': '成功進(jìn)入‘登錄/注冊’頁面' }] }, { 'title': '選中‘我已閱讀并同意用戶協(xié)議’,點擊‘本機(jī)號碼一鍵登錄’', 'topics': [{ 'title': '進(jìn)入‘手機(jī)快捷登錄頁面’' }] }, { 'title': '點擊‘一鍵登錄’', 'topics': [{ 'title': '登錄成功,跳轉(zhuǎn)至‘我的’頁面' }] }] }, { 'title': '正確的手機(jī)號碼及驗證碼登錄', 'topics': [{ 'title': '進(jìn)入‘登錄/注冊’頁面', 'topics': [{ 'title': '成功進(jìn)入‘登錄/注冊’頁面' }] }, { 'title': '點擊‘其他登錄方式’', 'topics': [{ 'title': '成功進(jìn)入‘手機(jī)登錄’頁面' }] }, { 'title': '選擇正確的區(qū)號,輸入正確的手機(jī)號碼,點擊‘獲取驗證碼’', 'topics': [{ 'title': '提示‘驗證碼已發(fā)送’,并正確收到驗證碼' }] }, { 'title': '正確輸入收到的驗證碼,選中‘我已閱讀并同意用戶協(xié)議’,點擊登錄', 'topics': [{ 'title': '登錄成功,跳轉(zhuǎn)至‘我的’頁面' }] }] }] }] }]}

三、xlwt庫的使用

1.下載xlwt庫

默認(rèn)下載最新庫,在配好環(huán)境python環(huán)境變量的前提下,cmd中輸入如下命令:

pip install xlwt

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

2.xlwt庫的簡單使用

簡單的使用如下:

import xlwt # 導(dǎo)入模塊workbook = xlwt.Workbook(encoding=’utf-8’) # 創(chuàng)建workbook 對象worksheet = workbook.add_sheet(’sheet1’) # 創(chuàng)建工作表sheetworksheet.write(0, 0, ’hello’) # 往表中寫內(nèi)容,第一各參數(shù) 行,第二個參數(shù)列,第三個參數(shù)內(nèi)容workbook.save(’students.xls’) # 保存表為students.xls

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

四、讀取xmind數(shù)據(jù)并寫入excel表格中

1.簡單的創(chuàng)建一個用例excel表格,并寫入第一行數(shù)據(jù)

代碼如下

import xlwt # 導(dǎo)入模塊from xmindparser import xmind_to_dictxm = xmind_to_dict('sulinkAPP.xmind')[0][’topic’]# 讀取xmind數(shù)據(jù)workbook = xlwt.Workbook(encoding=’utf-8’) # 創(chuàng)建workbook對象worksheet = workbook.add_sheet(xm['title'], cell_overwrite_ok=True) # 創(chuàng)建工作表,并設(shè)置可以重寫單元格內(nèi)容row0 = ['testcaseid', ’需求名稱’, ’測試用例名稱’, ’執(zhí)行步驟’, ’預(yù)期結(jié)果’, ’服務(wù)名稱’, ’版本’, ’執(zhí)行人員’]# 寫成excel表格用例的要素for i in range(len(row0)): worksheet.write(0, i, row0[i])

2.讀取xmind數(shù)據(jù),然后寫入上面表格中

在上面的代碼的基礎(chǔ)上添加點,把xmind數(shù)據(jù)寫入excel表格中

import xlwt # 導(dǎo)入模塊from xmindparser import xmind_to_dictxm = xmind_to_dict('sulinkAPP.xmind')[0][’topic’]# 讀取xmind數(shù)據(jù)workbook = xlwt.Workbook(encoding=’utf-8’) # 創(chuàng)建workbook對象worksheet = workbook.add_sheet(xm['title'], cell_overwrite_ok=True) # 創(chuàng)建工作表,并設(shè)置可以重寫單元格內(nèi)容row0 = ['testcaseid', ’需求名稱’, ’測試用例名稱’, ’執(zhí)行步驟’, ’預(yù)期結(jié)果’, ’服務(wù)名稱’, ’版本’, ’執(zhí)行人員’]# 寫成excel表格用例的要素for i in range(len(row0)): worksheet.write(0, i, row0[i])x = 0 # 寫入數(shù)據(jù)的當(dāng)前行數(shù)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'])# 執(zhí)行步驟有幾個 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'])# 預(yù)期結(jié)果 worksheet.write(x, 3, f'{n + 1}.' + test_step['title']) # 執(zhí)行步驟 worksheet.write_merge(x - c1 + 1, x, 0, 0, z) # testcaseid worksheet.write_merge(x - c1 + 1, x, 1, 1, test_module['title']) # 測試需求名稱 worksheet.write_merge(x - c1 + 1, x, 2, 2, test_case['title']) # 測試用例名稱workbook.save(xm['title'] + '.xls') # xls名稱取xmind主題名稱

執(zhí)行結(jié)果如下:使用python把xmind轉(zhuǎn)換成excel測試用例的實現(xiàn)代碼

3.調(diào)整下表格的格式

在上面的代碼的基礎(chǔ)上修改下,簡單的增加表格的樣式

import xlwt # 導(dǎo)入模塊from xmindparser import xmind_to_dictdef styles(): '''設(shè)置單元格的樣式的基礎(chǔ)方法''' style = xlwt.XFStyle() return styledef borders(status=1): '''設(shè)置單元格的邊框 細(xì)實線:1,小粗實線:2,細(xì)虛線:3,中細(xì)虛線:4,大粗實線:5,雙線:6,細(xì)點虛線:7大粗虛線:8,細(xì)點劃線:9,粗點劃線:10,細(xì)雙點劃線:11,粗雙點劃線:12,斜點劃線:13''' border = xlwt.Borders() border.left = status border.right = status border.top = status border.bottom = status return borderdef heights(worksheet, line, size=4): '''設(shè)置單元格的高度''' worksheet.row(line).height_mismatch = True worksheet.row(line).height = size*256def widths(worksheet, line, size=11): '''設(shè)置單元格的寬度''' worksheet.col(line).width = size*256def alignments(**kwargs): '''設(shè)置單元格的對齊方式 status有兩種:horz(水平),vert(垂直) horz中的direction常用的有:CENTER(居中),DISTRIBUTED(兩端),GENERAL,CENTER_ACROSS_SEL(分散),RIGHT(右邊),LEFT(左邊) vert中的direction常用的有:CENTER(居中),DISTRIBUTED(兩端),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 # 設(shè)置自動換行 return alignmentdef fonts(name=’宋體’, bold=False, underline=False, italic=False, colour=’black’, height=11): '''設(shè)置單元格中字體的樣式 默認(rèn)字體為宋體,不加粗,沒有下劃線,不是斜體,黑色字體''' 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 fontdef patterns(colors=1): '''設(shè)置單元格的背景顏色,該數(shù)字表示的顏色在xlwt庫的其他方法中也適用,默認(rèn)顏色為白色 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 patterndef main(): xm = xmind_to_dict('sulinkAPP.xmind')[0][’topic’] # print(json.dumps(xm, indent=2, ensure_ascii=False)) # indent為顯示json格式,ensure_ascii為顯示為中文,不顯示ASCII碼 workbook = xlwt.Workbook(encoding=’utf-8’) # 創(chuàng)建workbook對象 worksheet = workbook.add_sheet(xm['title'], cell_overwrite_ok=True) # 創(chuàng)建工作表 row0 = ['testcaseid', ’需求名稱’, ’測試用例名稱’, ’執(zhí)行步驟’, ’預(yù)期結(jié)果’, ’服務(wù)名稱’, ’版本’, ’執(zhí)行人員’] sizes = [10, 11, 30, 60, 50, 11, 11, 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, i, row0[i], style2) widths(worksheet, i, size=sizes[i]) style = styles() style.borders = borders() x = 0 # 寫入數(shù)據(jù)的當(dāng)前行數(shù) 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']) # 執(zhí)行步驟有幾個 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'], style) # 預(yù)期結(jié)果 worksheet.write(x, 3, f'{n + 1}.' + test_step['title'], style) # 執(zhí)行步驟 worksheet.write_merge(x - c1 + 1, x, 0, 0, z, style) # testcaseid worksheet.write_merge(x - c1 + 1, x, 1, 1, test_module['title'], style) # 測試需求名稱 worksheet.write_merge(x - c1 + 1, x, 2, 2, test_case['title'], style) # 測試用例名稱 workbook.save(xm['title'] + '.xls') # xls名稱取xmind主題名稱if __name__ == '__main__': main()

運(yùn)行結(jié)果如下:

使用python把xmind轉(zhuǎn)換成excel測試用例的實現(xiàn)代碼

4.封裝方法

上面的代碼基本已經(jīng)完成了,但是為了更好看,代碼可讀性更高,所以封裝下方法

# -*- coding:utf-8 -*-from xmindparser import xmind_to_dictimport xlwtclass XlwtSeting(object): @staticmethod # 靜態(tài)方法裝飾器,使用此裝飾器裝飾后,可以直接使用類名.方法名調(diào)用(XlwtSeting.styles()),并且不需要self參數(shù) def template_one(worksheet): dicts = {'horz': 'CENTER', 'vert': 'CENTER'} sizes = [15, 15, 30, 60, 45, 45, 15, 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, i, 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(): '''設(shè)置單元格的樣式的基礎(chǔ)方法''' style = xlwt.XFStyle() return style @staticmethod def borders(status=1): '''設(shè)置單元格的邊框, 細(xì)實線:1,小粗實線:2,細(xì)虛線:3,中細(xì)虛線:4,大粗實線:5,雙線:6,細(xì)點虛線:7大粗虛線:8,細(xì)點劃線:9,粗點劃線:10,細(xì)雙點劃線:11,粗雙點劃線:12,斜點劃線:13''' border = xlwt.Borders() border.left = status border.right = status border.top = status border.bottom = status return border @staticmethod def heights(worksheet, line, size=4): '''設(shè)置單元格的高度''' worksheet.row(line).height_mismatch = True worksheet.row(line).height = size * 256 @staticmethod def widths(worksheet, line, size=11): '''設(shè)置單元格的寬度''' worksheet.col(line).width = size * 256 @staticmethod def alignments(wrap=1, **kwargs): '''設(shè)置單元格的對齊方式, :接收一個對齊參數(shù)的字典{'horz': 'CENTER', 'vert': 'CENTER'}horz(水平),vert(垂直) :horz中的direction常用的有:CENTER(居中),DISTRIBUTED(兩端),GENERAL,CENTER_ACROSS_SEL(分散),RIGHT(右邊),LEFT(左邊) :vert中的direction常用的有:CENTER(居中),DISTRIBUTED(兩端),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 = wrap # 設(shè)置自動換行 return alignment @staticmethod def fonts(name=’宋體’, bold=False, underline=False, italic=False, colour=’black’, height=11): '''設(shè)置單元格中字體的樣式, 默認(rèn)字體為宋體,不加粗,沒有下劃線,不是斜體,黑色字體''' 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): '''設(shè)置單元格的背景顏色,該數(shù)字表示的顏色在xlwt庫的其他方法中也適用,默認(rèn)顏色為白色 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 patternclass XmindToXsl(XlwtSeting): def __init__(self, name): '''調(diào)用類時,讀取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’) # 創(chuàng)建workbook對象 self.worksheet = self.workbook.add_sheet(self.xm['title'], cell_overwrite_ok=True) # 創(chuàng)建工作表 def save(self, name): '''保存表格''' self.workbook.save(name + '.xls') @staticmethod def xmind_num(value): '''獲取xmind標(biāo)題個數(shù)''' try: return len(value['topics']) except KeyError: return 0 @staticmethod def xmind_title(value): '''獲取xmind標(biāo)題內(nèi)容''' return value['title'] def write_excel(self, result=’’, performer=’’, editionname=’’): '''生成excel文件的方法''' row0 = ['testcaseid', ’需求名稱’, ’測試用例名稱’, ’執(zhí)行步驟’, ’預(yù)期結(jié)果’, ’實際結(jié)果’, ’執(zhí)行人員’, ’版本’] style2 = self.template_one(self.worksheet) for i in range(len(row0)): self.worksheet.write(0, i, row0[i], style2) style = self.template_two() x = 0 # 寫入數(shù)據(jù)的當(dāng)前行數(shù) 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) # 執(zhí)行步驟有幾個 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, x, size=2) step = f'{n + 1}.' + self.xmind_title(test_step) # 執(zhí)行步驟 exce = f'{n + 1}.' + self.xmind_title(test_except) # 預(yù)期結(jié)果 self.worksheet.write(x, 3, step, style) # 寫入執(zhí)行步驟 self.worksheet.write(x, 4, exce, style) # 寫入預(yù)期結(jié)果 self.worksheet.write(x, 5, result, style) # 寫入實際結(jié)果 self.worksheet.write(x, 6, performer, style) # 寫入執(zhí)行人 mod = self.xmind_title(test_module) # 測試需求名稱 case = self.xmind_title(test_case) # 測試用例名稱 self.worksheet.write_merge(x - c1 + 1, x, 0, 0, z, style) # 寫入testcaseid self.worksheet.write_merge(x - c1 + 1, x, 1, 1, mod, style) # 寫入測試需求名稱 self.worksheet.write_merge(x - c1 + 1, x, 2, 2, case, style) # 寫入測試用例名稱 self.worksheet.write_merge(x - c1 + 1, x, 7, 7, editionname, style) # 寫入版本名稱 else: print('測試用例沒有操作步驟及預(yù)期結(jié)果') else: print('沒有測試用例') else: print('沒有測試套件') self.save(self.xm['title']) # 保存if __name__ == '__main__': names = 'sulinkAPP.xmind' xx = XmindToXsl(names) xx.write_excel()

運(yùn)行的結(jié)果如下:

使用python把xmind轉(zhuǎn)換成excel測試用例的實現(xiàn)代碼

五、創(chuàng)建一個簡單的GUI頁面

1.簡單使用tkinter

因為不需要太復(fù)雜的GUI頁面,所以我直接使用的是python自帶的tkinter庫,先簡單了解下tkinter庫怎么使用,參考文檔:https://blog.csdn.net/qq_46018418/article/details/105927203

import tkintertop = tkinter.Tk() # 生成主窗口label = tkinter.Label(top, text=’Hello, GUI’) # 生成標(biāo)簽label.pack() # 將標(biāo)簽添加到主窗口button1 = tkinter.Button(top, text='text') # 生成按鈕1button1.pack(side=tkinter.LEFT) # 將button1添加到top主窗口左邊button1 = tkinter.Button(top, text='text2') # 生成按鈕2button1.pack(side=tkinter.RIGHT) # 將button1添加到top主窗口左邊top.mainloop() # 進(jìn)入消息循環(huán)(必需組件)

代碼運(yùn)行結(jié)果如下:

使用python把xmind轉(zhuǎn)換成excel測試用例的實現(xiàn)代碼

2.使用tkinter創(chuàng)建一個簡單的GUI頁面

先初步使用tkinter創(chuàng)建一個簡單的GUI頁面,初步了解tkinter的使用細(xì)節(jié)

import tkinterdef getvalue(): '''獲取文本框中數(shù)據(jù)''' global path re = path.get() print(re)top = tkinter.Tk() # 生成主窗口top.title('test') # 設(shè)置窗口的標(biāo)題top.geometry('350x250') # 設(shè)置窗口的大小top.geometry(’+800+350’) # 設(shè)置窗口出現(xiàn)的位置top.resizable(0, 0) # 將窗口大小設(shè)置為不可變label = tkinter.Label(top, text=’目標(biāo)路徑’) # 生成一個標(biāo)簽label.grid(row=0, column=0) # 使用grid布局,標(biāo)簽顯示在第一行,第一列path = tkinter.StringVar() # 生成一個StringVar 對象,來保存下面輸入框中的內(nèi)容firstEntry = tkinter.Entry(top, textvariable=path) # 生成一個文本框,內(nèi)容保存在上面變量中firstEntry.grid(row=0, column=1) # 使用grid布局,文本框顯示在第一行,第二列# 生成一個按鈕,按鈕上顯示文字為“test”,設(shè)置點擊按鈕后,執(zhí)行command后面的方法# (注意:只寫方法名,保存方法的位置,不能加上()來調(diào)用)例:getvalue,不能寫成getvalue()clickButton = tkinter.Button(top, text='提交', command=getvalue)clickButton.grid(row=0, column=2) # 使用grid布局,按鈕顯示在第一行,第三列top.mainloop() # 進(jìn)入消息循環(huán)(必需組件)

代碼運(yùn)行結(jié)果如下:使用python把xmind轉(zhuǎn)換成excel測試用例的實現(xiàn)代碼

3.豐富GUI頁面元素

進(jìn)一步使用tkinter,把之前封裝的方法需要的參數(shù),看情況添加上GUI頁面中

import tkinterfrom tkinter.filedialog import askopenfilenamedef get_value(): '''獲取文本框中數(shù)據(jù)''' re = path.get() per = person.get() ver = version.get() print(f'地址:{re},測試人員:{per},測試版本:{ver}')def select_path(): '''選擇要轉(zhuǎn)換成excel的xmind地址''' path_ = askopenfilename() path.set(path_)top = tkinter.Tk() # 生成主窗口top.title('test') # 設(shè)置窗口的標(biāo)題top.geometry('350x250') # 設(shè)置窗口的大小top.geometry(’+800+350’) # 設(shè)置窗口出現(xiàn)的位置top.resizable(0, 0) # 將窗口大小設(shè)置為不可變# 文件的路徑first_label = tkinter.Label(top, text=’目標(biāo)路徑:’) # 生成一個標(biāo)簽first_label.grid(row=0, column=0) # 使用grid布局,標(biāo)簽顯示在第一行,第一列path = tkinter.StringVar() # 生成一個StringVar 對象,來保存下面輸入框中的內(nèi)容first_entry = tkinter.Entry(top, textvariable=path) # 生成一個文本框,內(nèi)容保存在上面變量中first_entry.grid(row=0, column=1) # 使用grid布局,文本框顯示在第一行,第二列# 生成一個按鈕,按鈕上顯示文字為“test”,設(shè)置點擊按鈕后,執(zhí)行command后面的方法# (注意:只寫方法名,保存方法的位置,不能加上()來調(diào)用)例: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='執(zhí)行人員:')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’) # 設(shè)置一個frame框架,并設(shè)置背景顏色為紅色f_btn.place(x=0, y=205, width=350, height=45) # 設(shè)置框架的大小,及在top窗口顯示位置submit_button = tkinter.Button(f_btn, text='提交', command=get_value, width=49, height=2, bg='#00FFFF') # 設(shè)置按鈕的文字,調(diào)用方法,大小,顏色,顯示框架submit_button.grid(row=0, column=2) # 使用grid布局,按鈕顯示在第一行,第一列# 進(jìn)入消息循環(huán)(必需組件)top.mainloop()

代碼運(yùn)行結(jié)果如下:

使用python把xmind轉(zhuǎn)換成excel測試用例的實現(xiàn)代碼

4.封裝方法,關(guān)聯(lián)轉(zhuǎn)換方法

上面代碼已經(jīng)初步實現(xiàn)了所需的功能,下面進(jìn)行封裝方法,關(guān)聯(lián)之前寫好的xmind轉(zhuǎn)換excel表格的方法

import tkinterimport refrom tkinter.filedialog import askopenfilenamefrom tkinter import messageboxfrom xmindToExcel.xmind_to_xls import XmindToXslclass MainUI(object): def __init__(self,, geometrysize='350x250', geometry='+800+350'): self.top = tkinter.Tk() # 生成主窗口 self.top.title(title) # 設(shè)置窗口的標(biāo)題 self.top.geometry(geometrysize) # 設(shè)置窗口的大小 self.top.geometry(geometry) # 設(shè)置窗口出現(xiàn)的位置 self.top.resizable(0, 0) # 將窗口大小設(shè)置為不可變 self.path = tkinter.StringVar() # 生成一個StringVar 對象,來保存下面輸入框中的內(nèi)容 self.person = tkinter.StringVar() self.version = tkinter.StringVar()# 調(diào)用自己寫的create_widgets()方法 self.create_widgets() def get_value(self): '''獲取文本框中數(shù)據(jù),并調(diào)用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轉(zhuǎn)換成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): '''選擇要轉(zhuǎn)換成excel的xmind地址''' path_ = askopenfilename() self.path.set(path_) def create_widgets(self): '''創(chuàng)建窗口中的各種元素''' # 文件的路徑 first_label = tkinter.Label(self.top, text=’目標(biāo)路徑:’) # 生成一個標(biāo)簽 first_label.grid(row=0, column=0) # 使用grid布局,標(biāo)簽顯示在第一行,第一列 first_entry = tkinter.Entry(self.top, textvariable=self.path) # 生成一個文本框,內(nèi)容保存在上面變量中 first_entry.grid(row=0, column=1) # 使用grid布局,文本框顯示在第一行,第二列 way_button = tkinter.Button(self.top, text='路徑選擇', command=self.select_path) way_button.grid(row=0, column=2) # 使用grid布局,按鈕顯示在第一行,第三列 # 測試人員 second_label = tkinter.Label(self.top, text='執(zhí)行人員:') 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’) # 設(shè)置一個frame框架,并設(shè)置背景顏色為紅色 f_btn.place(x=0, y=205, width=350, height=45) # 設(shè)置框架的大小,及在top窗口顯示位置 submit_button = tkinter.Button(f_btn, text='提交', command=self.get_value, width=49, height=2, bg='#00FFFF') # 設(shè)置按鈕的文字,調(diào)用方法,大小,顏色,顯示框架 submit_button.grid(row=0, column=2) # 使用grid布局,按鈕顯示在第一行,第一列 # 進(jìn)入消息循環(huán)(必需組件) self.top.mainloop()if __name__ == '__main__': mu = MainUI(title='sulinkAPP')

代碼運(yùn)行結(jié)果如下:

使用python把xmind轉(zhuǎn)換成excel測試用例的實現(xiàn)代碼使用python把xmind轉(zhuǎn)換成excel測試用例的實現(xiàn)代碼

六、打包

1.下載安裝pyinstaller

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

pip install pyinstaller

2.使用pyinstaller打包文件

如編寫上面全部代碼的環(huán)境為虛擬環(huán)境,則打包時需要在主環(huán)境安裝編寫時導(dǎo)入的庫(如:xmindparser,xlwt),如果沒有使用虛擬環(huán)境,則不需重復(fù)安裝。安裝好pyinstaller后,到項目的目錄下,運(yùn)行cmd,輸入命令。

pyinstaller -F mainUI.py -p xmind_to_xls.py

-F 后是main文件,-p 后是自己編寫的依賴py文件,多個文件使用;分隔。使用python把xmind轉(zhuǎn)換成excel測試用例的實現(xiàn)代碼使用python把xmind轉(zhuǎn)換成excel測試用例的實現(xiàn)代碼

因為是自己學(xué)習(xí),所以直接把mainUI文件當(dāng)做main文件。注:如果運(yùn)行打包后的exe文件包,報“xlwt no find”之類的錯,請在主環(huán)境pip下載安裝對應(yīng)的庫

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

到此這篇關(guān)于使用python把xmind轉(zhuǎn)換成excel測試用例的實現(xiàn)代碼的文章就介紹到這了,更多相關(guān)python excel測試用例內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: python
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
吉吉日韩欧美| 久久精品伊人| 久久影院资源站| 日本午夜精品久久久| 老司机久久99久久精品播放免费| 国产精品网址| 欧美午夜三级| 久久国产乱子精品免费女| 香蕉久久久久久| 日本在线成人| 日韩精品亚洲专区在线观看| 亚洲另类黄色| 欧美视频久久| 麻豆精品少妇| 国产+成+人+亚洲欧洲在线| 国产一区二区三区黄网站| 精品免费av一区二区三区| 美女久久久久久| 热三久草你在线| 亚洲国产不卡| 亚洲一区二区三区免费在线观看| 鲁大师成人一区二区三区| 亚洲伊人影院| 国产激情精品一区二区三区| 久久只有精品| 欧美亚洲精品在线| 亚洲91在线| 成人在线免费观看网站| 亚洲大片在线| 欧美精品福利| 激情丁香综合| 欧美色综合网| 国产一区观看| 久久国产人妖系列| 亚洲va中文在线播放免费| 久久影视一区| 日韩av不卡在线观看| 黄色网一区二区| 久久亚洲图片| а√天堂8资源中文在线| 欧美美女一区| 麻豆精品av| 日韩精品一级二级| 精品久久99| 亚洲精品乱码| 久久伦理在线| 日本视频在线一区| 999精品色在线播放| 国产成人免费| 精品亚洲a∨一区二区三区18| 欧美日韩免费观看视频| 日韩高清不卡一区二区| 国模 一区 二区 三区| 免费看一区二区三区| 亚洲91在线| 亚洲色图国产| 一区二区自拍| 亚洲国产影院| 国产专区一区| 久久亚洲成人| 亚洲国内精品| 99久久久久国产精品| 国产在视频一区二区三区吞精| 国产丝袜一区| 日韩在线网址| 美女网站久久| 免费精品视频| 蜜桃视频免费观看一区| 亚洲综合日本| 亚洲视频二区| 亚洲精品女人| 欧美日韩1区2区3区| 无码日韩精品一区二区免费| 免费看欧美美女黄的网站| 麻豆精品蜜桃| 日韩欧美另类一区二区| 日韩亚洲一区在线| 日韩国产网站| 亚洲深爱激情| 亚洲精品一级| 久久精品99久久久| 久久精品国产精品亚洲毛片| 鲁大师精品99久久久| 国产不卡人人| 黄色亚洲精品| 日日夜夜免费精品视频| 欧美精品影院| 中文字幕高清在线播放| 国精品一区二区| 日韩精品第一| 福利一区在线| 亚洲一区二区网站| 国产一级成人av| 国产一区二区三区四区| 青青久久av| 一区在线视频观看| 视频在线观看91| 狠狠久久伊人中文字幕| 国产在线欧美| 国产精品最新| 美女毛片一区二区三区四区| 亚洲aa在线| 91成人超碰| 老牛国内精品亚洲成av人片| 亚洲男女av一区二区| 国产精品欧美大片| 国产精品普通话对白| 激情久久一区二区| 日韩有吗在线观看| 激情视频一区二区三区| 国产精品大片| 欧美+日本+国产+在线a∨观看| 日韩精品1区2区3区| 久久久人人人| 福利一区在线| 国产欧美高清| 青草久久视频| 蜜臀久久99精品久久久久宅男| 三上亚洲一区二区| 久久国产视频网| 三级久久三级久久久| 欧美日韩精品一本二本三本| 亚洲黄色网址| 日韩av自拍| 久久中文精品| 久久一区亚洲| 日韩在线网址| 综合激情在线| 亚洲精品少妇| 免费人成精品欧美精品 | 日韩国产欧美三级| 亚洲一区二区三区久久久| 亚洲午夜黄色| 欧美日韩精品一区二区视频| 麻豆理论在线观看| 日韩国产一区二区| 国产 日韩 欧美 综合 一区| 国产精品资源| 国产精品主播在线观看| 国产欧美日韩影院| 青青草国产成人99久久| 日韩一区二区三区免费视频 | 色欧美自拍视频| 亚洲性色av| 女主播福利一区| 视频一区二区三区入口| 亚洲欧美成人综合| 日本亚洲三级在线| 国产精品乱战久久久| 国产欧美欧美| 在线天堂资源www在线污| 亚洲a在线视频| 99香蕉国产精品偷在线观看 | 亚洲成av人片一区二区密柚| 久久精品青草| 黄色成人在线网址| 亚洲a成人v| 国产成人黄色| 999在线观看精品免费不卡网站| 久久xxxx| 久久精品国产免费| 亚洲一级少妇| 91高清一区| 久久国产精品免费精品3p | 中文字幕视频精品一区二区三区| 亚洲影视一区二区三区| 国产极品模特精品一二| 欧美国产91| 国产精品三级| 香蕉精品999视频一区二区| 久久国产婷婷国产香蕉| 婷婷亚洲综合| 欧美交a欧美精品喷水| 欧美 日韩 国产一区二区在线视频| 国产精品分类| 欧美日韩视频| 性欧美videohd高精| 色狠狠一区二区三区| 日韩精品一区二区三区免费观影| 日韩1区2区日韩1区2区| 悠悠资源网久久精品| 欧美freesex黑人又粗又大| 国产欧美日韩综合一区在线播放| 国产精品婷婷| 久久久成人网| 天堂√中文最新版在线| 国产精品亚洲片在线播放| 亚洲青青久久| 亚洲色图综合| 狠狠色狠狠色综合日日tαg| 日本不卡在线视频| 久久国产高清| 亚洲少妇一区| 日韩精品欧美| 日本精品在线中文字幕| 国产精品嫩模av在线| 日韩av影院| 国产精品毛片| 九九久久电影| 免费观看在线综合|