使用python把xmind转换成excel测试用例的实现代码

前言

因为写好了测试xmind脑图后,然后再编写测试用例,实在是太麻烦了,所以我写了一点测试用例后,就网上百度了下,怎么直接把xmind脑图转换成excel测试用例,纯个人学习笔记

本文参考:
https://www.cnblogs.com/xu-xu/articles/11999960.html
https://www.cnblogs.com/xu-xu/articles/12000205.html



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

一、确定好自己的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": "正确的手机号码及验证码登录",
       "topics": [{
         "title": "进入‘登录/注册'页面",
         "topics": [{
           "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, 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"], cell_overwrite_ok=True) # 创建工作表,并设置可以重写单元格内容
row0 = ["testcaseid", '需求名称', '测试用例名称', '执行步骤', '预期结果', '服务名称', '版本', '执行人员']	# 写成excel表格用例的要素

for i in range(len(row0)):
  worksheet.write(0, i, 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, 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主题名称

执行结果如下:

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, line, 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(居中),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 # 设置自动换行
  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, indent=2, 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, 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 # 写入数据的当前行数
  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"], style) # 预期结果
          worksheet.write(x, 3, f"{n + 1}." + test_step["title"], style) # 执行步骤
        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()

运行结果如下:

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, 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():
    """设置单元格的样式的基础方法"""
    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, line, size=4):
    """设置单元格的高度"""
    worksheet.row(line).height_mismatch = True
    worksheet.row(line).height = size * 256

  @staticmethod
  def widths(worksheet, line, size=11):
    """设置单元格的宽度"""
    worksheet.col(line).width = size * 256

  @staticmethod
  def alignments(wrap=1, **kwargs):
    """设置单元格的对齐方式,
    :接收一个对齐参数的字典{"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 # 设置自动换行
    return alignment

  @staticmethod
  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

  @staticmethod
  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

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, i, row0[i], 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, x, size=2)
                  step = f"{n + 1}." + self.xmind_title(test_step) # 执行步骤
                  exce = f"{n + 1}." + self.xmind_title(test_except) # 预期结果
                  self.worksheet.write(x, 3, step, style) # 写入执行步骤
                  self.worksheet.write(x, 4, 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, 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("测试用例没有操作步骤及预期结果")
          else:
            print("没有测试用例")
      else:
        print("没有测试套件")

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

if __name__ == "__main__":
  names = "sulinkAPP.xmind"
  xx = XmindToXsl(names)
  xx.write_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, text="提交", 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, text="路径选择", 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, y=205, width=350, height=45) # 设置框架的大小,及在top窗口显示位置
    submit_button = tkinter.Button(f_btn, text="提交", command=self.get_value, width=49, height=2,
                    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测试用例内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python自动化测试之从命令行运行测试用例with verbosity

    本文实例讲述了python自动化测试之从命令行运行测试用例with verbosity,分享给大家供大家参考.具体如下: 实例文件recipe3.py如下: class RomanNumeralConverter(object): def __init__(self, roman_numeral): self.roman_numeral = roman_numeral self.digit_map = {"M":1000, "D":500, "C"

  • Python Nose框架编写测试用例方法

    1. 关于Nose nose项目是于2005年发布的,也就是 py.test改名后的一年.它是由 Jason Pellerin 编写的,支持与 py.test 相同的测试习惯做法,但是这个包更容易安装和维护. nose的口号是:扩展unittest,nose让测试更简单! nose官网:http://nose.readthedocs.io/en/latest/index.html 使用nose框架进行Python项目的自动化测试,可以参考:http://www.cnblogs.com/liaof

  • python selenium执行所有测试用例并生成报告的方法

    直接上代码. # -*- coding: utf-8 -*- import time import os import os.path import re import unittest import HTMLTestRunner import shutil shutil.copyfile("setting.ini","../setting.ini") casepaths = [] def createsuite(casepath): testunit = unit

  • 使用python把xmind转换成excel测试用例的实现代码

    前言 因为写好了测试xmind脑图后,然后再编写测试用例,实在是太麻烦了,所以我写了一点测试用例后,就网上百度了下,怎么直接把xmind脑图转换成excel测试用例,纯个人学习笔记 本文参考: https://www.cnblogs.com/xu-xu/articles/11999960.html https://www.cnblogs.com/xu-xu/articles/12000205.html 提示:以下是本篇文章正文内容,下面可供参考 一.确定好自己的xmind的用例格式 因为xmin

  • 利用python将图片转换成excel文档格式

    前言 本文主要介绍了关于利用python将图片转换成excel文档的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 实现步骤 读取图像,获取图像每个像素点的RGB值: 根据每个像素点的RGB值设置excel每个方格的颜色值: 根据像素点的坐标,写入excel文件: 保存退出: 示例代码 from PIL import Image import numpy as np import time import matplotlib.pyplot as plt import

  • Go结合反射将结构体转换成Excel的过程详解

    目录 Excel中的一些概念 使用tealeg操作Excel 安装tealeg 使用tealeg新建一个表格 Go结合反射将结构体转换成Excel 反射获取每个Struct中的Tag 通过反射将结构体的值转换成map[excelTag]strucVal 利用反射将一个Silce,Array或者Struct转换成[]map[excelTag]strucVal 通过tealeg将[]map[excelTag]strucVal转换成Excel 运行测试用例验证 Excel中的一些概念 一个excel文

  • python将字符串转换成数组的方法

    python将字符串转换成数组的方法.分享给大家供大家参考.具体实现方法如下: #----------------------------------------- # Name: string_to_array.py # Author: Kevin Harris # Last Modified: 02/13/04 # Description: This Python script demonstrates # how to modify a string by # converting it

  • python将文本转换成图片输出的方法

    本文实例讲述了python将文本转换成图片输出的方法.分享给大家供大家参考.具体实现方法如下: #-*- coding:utf-8 -*- from PIL import Image,ImageFont,ImageDraw text = u'欢迎访问我们,http://www.jb51.net' font = ImageFont.truetype("msyh.ttf",18) lines = [] line ='' for word in text.split(): print wor

  • ASP.NET使用xslt将xml转换成Excel

    序: 最近在给客户做一个管理系统的时候,客户提出要将查询结果导出到Excel.对于还是实习生的我倍感压力,于是找了点资料.网上有个示例,其中方法十分简单.于是照猫画虎,把方法和心得与大家分享.OK,Let`s go 第一步: 创建一个Excel文件(就是 普通的Excel),在第一个单元格输入"city",然后选择"另存为",此时弹出保存窗口.注意:将保持格式选择为"XML 表格(*.xml)",点击保存.完毕后用记事本打开这个Excel文件.你

  • Python实现列表转换成字典数据结构的方法

    本文实例讲述了Python实现列表转换成字典数据结构的方法.分享给大家供大家参考,具体如下: ''' [ {'symbol': 101, 'sort': 1, 'name': 'aaaa'}, {'symbol': 102, 'sort': 2, 'name': 'bbbb'}, {'symbol': 103, 'sort': 3, 'name': 'cccc'}, {'symbol': 104, 'sort': 4, 'name': 'dddd'}, {'symbol': 105, 'sort

  • python 将字符串转换成字典dict的各种方式总结

    1)利用eval可以将字典格式的字符串与字典户转 >>>mstr = '{"name":"yct","age":10}' 转换为可以用的字典: >>>eval(mstr), type( eval(mstr) ) {"name":"yct","age":10}, dict 2).JSON到字典转化: >>>dictinfo = json

  • python将字符串转换成json的方法小结

    最近在工作中遇到了一个小问题,如果要将字符串型的数据转换成dict类型,我第一时间就想到了使用json函数.但是里面出现了一些问题 1.通过json来转换: In [1]: import json In [2]: mes = '{"InsId": 2, "name": "lege-happy", "CreationTime": "2019-04-23T03:18:02Z"}' In [3]: mes_to_

  • Python实现Word表格转成Excel表格的示例代码

    准备工作 pip install docx pip install openpyxl 具体代码 # 没有的先pip install 包名称 from docx import Document from openpyxl import Workbook document = Document('Docx文件路径.dicx') count = 0 tables = [] wb = Workbook() ws = wb.active # 设置列数,可以指定列名称,有几列就设置几个, # A对应列1,B

随机推荐