最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python提效小工具之統(tǒng)計xmind用例數(shù)量(源碼)

 更新時間:2022年10月15日 13:40:25   作者:淘氣的包子  
這篇文章主要介紹了python提效小工具之統(tǒng)計xmind用例數(shù)量,利用python開發(fā)小工具,實現(xiàn)同一份xmind文件中一個或多個sheet頁的用例數(shù)量統(tǒng)計功能,需要的朋友可以參考下

使用Python讀取解析xmind文件,一鍵統(tǒng)計測試用例數(shù)量。

問題:做測試的朋友們經(jīng)常會用到xmind這個工具來梳理測試點或寫測試用例,但是xmind8沒有自帶的統(tǒng)計測試用例,其他版本的xmind有些自帶節(jié)點數(shù)量統(tǒng)計功能,但也也不會累計最終的數(shù)量,導致統(tǒng)計測試工作量比較困難。

解決方法:利用python開發(fā)小工具,實現(xiàn)同一份xmind文件中一個或多個sheet頁的用例數(shù)量統(tǒng)計功能。

一、源碼

#!/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = 'zhongxintao'
import tkinter as tk
from tkinter import filedialog, messagebox
from xmindparser import xmind_to_dict
import xmind
 
 
class ParseXmind:
    def __init__(self, root):
        self.count = 0
        self.case_fail = 0
        self.case_success = 0
        self.case_block = 0
        self.case_priority = 0
 
        # total匯總用
        self.total_cases = 0
        self.total_success = 0
        self.total_fail = 0
        self.total_block = 0
        self.toal_case_priority = 0
 
        # 設置彈框標題、初始位置、默認大小
        root.title(u'xmind文件解析及用例統(tǒng)計工具')
        width = 760
        height = 600
        xscreen = root.winfo_screenwidth()
        yscreen = root.winfo_screenheight()
        xmiddle = (xscreen - width) / 2
        ymiddle = (yscreen - height) / 2
        root.geometry('%dx%d+%d+%d' % (width, height, xmiddle, ymiddle))
 
        # 設置2個Frame
        self.frm1 = tk.Frame(root)
        self.frm2 = tk.Frame(root)
 
        # 設置彈框布局
        self.frm1.grid(row=1, padx='20', pady='20')
        self.frm2.grid(row=2, padx='30', pady='30')
 
        self.but_upload = tk.Button(self.frm1, text=u'上傳xmind文件', command=self.upload_files, bg='#dfdfdf')
        self.but_upload.grid(row=0, column=0, pady='10')
        self.text = tk.Text(self.frm1, width=55, height=10, bg='#f0f0f0')
        self.text.grid(row=1, column=0)
        self.but2 = tk.Button(self.frm2, text=u"開始統(tǒng)計", command=self.new_lines, bg='#dfdfdf')
        self.but2.grid(row=0, columnspan=6, pady='10')
        self.label_file = tk.Label(self.frm2, text=u"文件名", relief='groove', borderwidth='2', width=25,
                                   bg='#FFD0A2')
        self.label_file.grid(row=1, column=0)
        self.label_case = tk.Label(self.frm2, text=u"用例數(shù)", relief='groove', borderwidth='2', width=10,
                                   bg='#FFD0A2').grid(row=1, column=1)
        self.label_pass = tk.Label(self.frm2, text=u"成功", relief='groove', borderwidth='2', width=10,
                                   bg='#FFD0A2').grid(row=1, column=2)
        self.label_fail = tk.Label(self.frm2, text=u"失敗", relief='groove', borderwidth='2', width=10,
                                   bg='#FFD0A2').grid(row=1, column=3)
        self.label_block = tk.Label(self.frm2, text=u"阻塞", relief='groove', borderwidth='2', width=10,
                                    bg='#FFD0A2').grid(row=1, column=4)
        self.label_case_priority = tk.Label(self.frm2, text="p0case", relief='groove', borderwidth='2',
                                            width=10, bg='#FFD0A2').grid(row=1, column=5)
 
    def count_case(self, li):
        """統(tǒng)計xmind中的用例數(shù)"""
        for i in range(len(li)):
            if li[i].__contains__('topics'):
                # 帶topics標簽表示有子標題,遞歸執(zhí)行方法
                self.count_case(li[i]['topics'])
                # 不帶topics表示無子標題,此級別即是用例
            else:
                # 有標記成功或失敗時會有makers標簽
                if li[i].__contains__('makers'):
                    for mark in li[i]['makers']:
                        # 成功
                        if mark == "symbol-right":
                            self.case_success += 1
                        # 失敗
                        elif mark == "symbol-wrong":
                            self.case_fail += 1
                        # 阻塞
                        elif mark == "symbol-attention":
                            self.case_block += 1
                        # 優(yōu)先級
                        elif mark == "priority-1":
                            self.case_priority += 1
                # 用例總數(shù)
                self.count += 1
 
    def new_line(self, filename, row_number):
        """用例統(tǒng)計表新增一行"""
        # sheets是一個list,可包含多sheet頁
        sheets = xmind_to_dict(filename)  # 調(diào)用此方法,將xmind轉成字典
        for sheet in sheets:
            print(sheet)
            # 字典的值sheet['topic']['topics']是一個list
            my_list = sheet['topic']['topics']
            print(my_list)
            self.count_case(my_list)
 
        # 插入一行統(tǒng)計數(shù)據(jù)
        lastname = filename.split('/')
        self.label_file = tk.Label(self.frm2, text=lastname[-1], relief='groove', borderwidth='2', width=25)
        self.label_file.grid(row=row_number, column=0)
 
        self.label_case = tk.Label(self.frm2, text=self.count, relief='groove', borderwidth='2', width=10)
        self.label_case.grid(row=row_number, column=1)
        self.label_pass = tk.Label(self.frm2, text=self.case_success, relief='groove', borderwidth='2',
                                   width=10)
        self.label_pass.grid(row=row_number, column=2)
        self.label_fail = tk.Label(self.frm2, text=self.case_fail, relief='groove', borderwidth='2', width=10)
        self.label_fail.grid(row=row_number, column=3)
        self.label_block = tk.Label(self.frm2, text=self.case_block, relief='groove', borderwidth='2', width=10)
        self.label_block.grid(row=row_number, column=4)
        self.label_case_priority = tk.Label(self.frm2, text=self.case_priority, relief='groove', borderwidth='2',
                                            width=10)
        self.label_case_priority.grid(row=row_number, column=5)
        self.total_cases += self.count
        self.total_success += self.case_success
        self.total_fail += self.case_fail
        self.total_block += self.case_block
        self.toal_case_priority += self.case_priority
 
    def new_lines(self):
        """用例統(tǒng)計表新增多行"""
        # 從text中獲取所有行
        lines = self.text.get(1.0, tk.END)
        row_number = 2
        # 分隔成每行
        for line in lines.splitlines():
            if line == '':
                break
            print(line)
            self.new_line(line, row_number)
            row_number += 1
 
        # total匯總行
        self.label_file = tk.Label(self.frm2, text='total', relief='groove', borderwidth='2', width=25)
        self.label_file.grid(row=row_number, column=0)
        self.label_case = tk.Label(self.frm2, text=self.total_cases, relief='groove', borderwidth='2', width=10)
        self.label_case.grid(row=row_number, column=1)
 
        self.label_pass = tk.Label(self.frm2, text=self.total_success, relief='groove', borderwidth='2',
                                   width=10)
        self.label_pass.grid(row=row_number, column=2)
        self.label_fail = tk.Label(self.frm2, text=self.total_fail, relief='groove', borderwidth='2', width=10)
        self.label_fail.grid(row=row_number, column=3)
        self.label_block = tk.Label(self.frm2, text=self.total_block, relief='groove', borderwidth='2',
                                    width=10)
        self.label_block.grid(row=row_number, column=4)
 
        self.label_case_priority = tk.Label(self.frm2, text=self.toal_case_priority, relief='groove',
                                            borderwidth='2',
                                            width=10)
        self.label_case_priority.grid(row=row_number, column=5)
 
    def upload_files(self):
        """上傳多個文件,并插入text中"""
        select_files = tk.filedialog.askopenfilenames(title=u"可選擇1個或多個文件")
        for file in select_files:
            self.text.insert(tk.END, file + '\n')
            self.text.update()
if __name__ == '__main__':
    r = tk.Tk()
    ParseXmind(r)
    r.mainloop()

二、工具使用說明

1、xmind文件中使用下列圖標進行分類標識:

標記表示p0級別case:數(shù)字1

標記表示執(zhí)行通過case:綠色√

標記表示執(zhí)行失敗case:紅色×

標記表示執(zhí)行阻塞case:橙色!

2、執(zhí)行代碼

3、在彈框內(nèi)【上傳xmind文件】按鈕

4、在彈框內(nèi)【開始統(tǒng)計】按鈕

三、實現(xiàn)效果

到此這篇關于python提效小工具之統(tǒng)計xmind用例數(shù)量(源碼)的文章就介紹到這了,更多相關python xmind工具內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Python中有哪些關鍵字及關鍵字的用法

    Python中有哪些關鍵字及關鍵字的用法

    這篇文章主要介紹了Python中有哪些關鍵字及關鍵字的用法,分享python中常用的關鍵字,本文結合示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-02-02
  • 離線狀態(tài)下在jupyter notebook中使用plotly實例

    離線狀態(tài)下在jupyter notebook中使用plotly實例

    這篇文章主要介紹了離線狀態(tài)下在jupyter notebook中使用plotly實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • Python內(nèi)置方法和屬性應用:反射和單例(推薦)

    Python內(nèi)置方法和屬性應用:反射和單例(推薦)

    這篇文章主要介紹了Python內(nèi)置方法和屬性應用:反射和單例,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • python批量創(chuàng)建變量并賦值操作

    python批量創(chuàng)建變量并賦值操作

    這篇文章主要介紹了python批量創(chuàng)建變量并賦值操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • python中dump與dumps實現(xiàn)序列化

    python中dump與dumps實現(xiàn)序列化

    這篇文章就來介紹python中dump與dumps實現(xiàn)序列化,文章將圍繞dump與dumps實現(xiàn)序列化展開內(nèi)容且簡精,需要的朋友可以參考一下,希望對你有所幫助
    2021-10-10
  • 利用Python制作簡易的核酸檢測日歷

    利用Python制作簡易的核酸檢測日歷

    這篇文章主要為大家詳細介紹了如何利用Python語言制作簡易的核酸檢測日歷,文中的示例代碼講解詳細,感興趣的小伙伴可以動手嘗試一下
    2022-09-09
  • python3判斷url鏈接是否為404的方法

    python3判斷url鏈接是否為404的方法

    這篇文章主要介紹了python3判斷url鏈接是否為404的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • Python中裝飾器和魔法方法的區(qū)別解析

    Python中裝飾器和魔法方法的區(qū)別解析

    在Python中,裝飾器(Decorators)和魔法方法(Magic Methods)是兩種不同的高級特性,分別服務于不同的目的,這篇文章主要介紹了Python中裝飾器和魔法方法的區(qū)別,需要的朋友可以參考下
    2024-03-03
  • Python pygame實現(xiàn)圖像基本變換的示例詳解

    Python pygame實現(xiàn)圖像基本變換的示例詳解

    pygame的transform中封裝了一些基礎的圖像處理函數(shù),這篇文章主要為大家介紹了pygame實現(xiàn)圖像的基本變換,例如縮放、旋轉、鏡像等,感興趣的小伙伴可以了解一下
    2023-11-11
  • 用Python畫圣誕樹代碼示例

    用Python畫圣誕樹代碼示例

    大家好,本篇文章主要講的是用Python畫圣誕樹代碼示例,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12

最新評論

兰州市| 孝感市| 高雄县| 潞西市| 藁城市| 德惠市| 凌海市| 株洲市| 潍坊市| 将乐县| 额尔古纳市| 壤塘县| 蒲江县| 安徽省| 北京市| 宜宾市| 新安县| 缙云县| 麦盖提县| 敦化市| 赣榆县| 邢台县| 宜宾市| 金坛市| 甘德县| 澄城县| 榆中县| 阿拉善左旗| 莲花县| 都匀市| 无锡市| 沐川县| 长岭县| 文昌市| 平和县| 金塔县| 南平市| 甘孜县| 嘉峪关市| 长乐市| 筠连县|