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

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

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

image.png

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

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

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

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


image.png

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

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

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

详细的过程在这里不做过多的介绍,就说明下脚本中的一些重点
整个过程实际上就分了两步走,先解析xmind转成testcase,在将testcase转成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 改变之路,从未停止,你觉得它应该怎么改变?欢迎大家留言讨论。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,029评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,238评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,576评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,214评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,324评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,392评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,416评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,196评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,631评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,919评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,090评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,767评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,410评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,090评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,328评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,952评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,979评论 2 351