测试用例管理之xmind进化之路(xmind转excel)

大家好,我是Notordinary,一个走在测试领域这片蓝海中, 蹉跎前行的技术渣渣,唯有一直走下去,也许能改变点什么,加油!

前一篇文章测试用例管理之xmind体验给大家展示了一个比较明朗的xmind测试用例管理思路,那么结合我们日常中不论是实际测试人员还是测试管理者,都会关心的问题就是
测试输出如何体现,测试过程如何体现???
作为用例,输出就是用例文档,过程就是用例的执行过程
首先我们先改造一下xmind,让它能够更加方便大家理解测试用例

测试用例管理之xmind进化之路(xmind转excel)测试用例管理之xmind进化之路(xmind转excel)
image.png

如上图,使用xmind自带的图标功能,通过测试标题的图标1可以作为优先级定义,在期望结果中增加对号来标识执行结果

通过上述的非常简单的改造,实际上作为日常的简单测试用例管理已经绰绰有余,既然工作使用xmind来编写用例,可是如果公司更加希望有excel类等的执行结果输出怎么办?

要是xmind可以自己转成excel内容就好了

对就是这个思路,我们让xmind自己转成excel,期望的结果如图

测试用例管理之xmind进化之路(xmind转excel)测试用例管理之xmind进化之路(xmind转excel)
image.png

如果有这种功能,那么用xmind来逻辑发散用例,excel来作为执行输出和过程监控,这是一个非常好的思路

有了思路,就不怕无法操作

首先选择python,为什么选他,很简单,因为xmind支持python,有个xmind模块,里面有满足我们所需的任何操作

详细的过程在这里不做过多的介绍,就说明下脚本中的一些重点
整个过程实际上就分了两步走,先解析xmind转成testcase,在将testcase转成excel输出,如下图

测试用例管理之xmind进化之路(xmind转excel)测试用例管理之xmind进化之路(xmind转excel)
image.png

先看第一步:xmind的dict输出转成testcase对象,看下面代码

    def xmind2case(self):
        models = self.xmind_sheet_data["topic"]['topics']
        global l
        for model in models:
            # 如果存在优先级9,那么则忽略当前的内容
            if 'priority-9' in model['markers'] : continue
            for func in model['topics']:
                if 'priority-9' in func['markers']: continue
                for ca in func['topics']:
                    if 'priority-9' in ca['markers']: continue
                    case = xcase.XmindCase()
                    # 设置模块
                    case.set_model(model['title'])
                    # 设置功能
                    case.set_function(func['title'])
                    # 设置用例
                    case.set_title(ca['title'])

                    # 判断该case的优先级,并设置
                    if ca['markers']:
                        case.set_priority(ca['markers'][0])
                    case.set_step(ca['topics'][0]['title'])

                    # 判断当前的case中的期望结果是否达到预期
                    if 'symbol-right' in ca['topics'][0]['topics'][0]['markers']:
                        case.set_result('Pass')
                    elif 'symbol-wrong' in ca['topics'][0]['topics'][0]['markers']:
                        case.set_result('Fail')
                    elif ca['topics'][0]['topics'][0]['markers'] == []:
                        case.set_result('None')

                    # 设置期望值
                    case.set_expect(ca['topics'][0]['topics'][0]['title'])

                    # 判断备注是否有,如果没有该节点则默认为空,有则赋值topics下的title
                    if len(ca['topics'][0]['topics'][0]['topics']) > 0:
                        case.set_notes(ca['topics'][0]['topics'][0]['topics'][0]['title'])
                    else:
                        case.set_notes('')
                    l.append(case)

成功转成xmindcase后, 就可以对这些case进行excel转化,

import openpyxl
from openpyxl.styles import Font
from tools.xmind_parse import l
from openpyxl.styles.colors import RED, BLUE, GREEN

class ExcelWriter():
    def __init__(self, excel_name, sheet_name="测试用例"):
        self.wb = openpyxl.Workbook()
        self.sheet = self.wb.active
        self.sheet.title = sheet_name
        self.excel_name = excel_name

    def __enter__(self):
        return self

    # 初始化标题
    def init_title(self):
        self.sheet['A1']= '测试编号'
        self.sheet['B1'] = '模块'
        self.sheet['C1'] = '功能'
        self.sheet['D1'] = '优先级'
        self.sheet['E1'] = '测试标题'
        self.sheet['F1'] = '测试步骤'
        self.sheet['G1'] = '期望结果'
        self.sheet['H1'] = '测试结果'
        self.sheet['I1'] = '备注'
        # 给用例标题加粗
        for col in range(1, 10):
            self.sheet.cell(row=1, column=col).font = Font(bold=True)

    def write_rows(self):
        global l
        row = 2
        # 按行赋值
        for i in l:
            self.sheet.cell(row=row, column=1).value = row-1
            self.sheet.cell(row=row, column=2).value = i.model
            self.sheet.cell(row=row, column=3).value = i.function
            self.sheet.cell(row=row, column=4).value = i.priority
            self.sheet.cell(row=row, column=5).value = i.title
            self.sheet.cell(row=row, column=6).value = i.step
            self.sheet.cell(row=row, column=7).value = i.expect
            self.sheet.cell(row=row, column=8).value = i.result
            self.sheet.cell(row=row, column=9).value = i.notes
            if i.result == 'Pass':
                self.sheet.cell(row=row, column=8).font = Font(color=GREEN)
            elif i.result == 'Fail':
                self.sheet.cell(row=row, column=8).font = Font(color=RED)
            row += 1

    def __exit__(self, exc_type, exc_val, exc_tb):
        self.wb.save(self.excel_name)

完成这两个部分的核心逻辑代码,那么基本上就能进行xmind转excel的操作了,经过实测,最终会完成上述截图中的xmind》》》》excel的输出

Xmind_2_TestCase:git 改变之路,从未停止,你觉得它应该怎么改变?欢迎大家留言讨论。

       

4 条评论

留言

本站文章如未特殊注明,均为原创,转载请注明出处: 未必平凡  本文链接地址: https://vv2014.com/1277.html