• 【xmind converse excel】测试用例定制化小工具


    背景

    公司使用jira, jira写测试用例,jira可以通过execl导入进jira, 生成测试用例,但是模板很不统一,如果只是再execl中修改,又觉得及其的麻烦,所以写了一个xmind 转化为定制版本的execl测试用例,便于更好的写测试去思考,而不是让费在修改execl中

    jira用例分析

    • 分析,根据jira中提供的模板,我们可以知道,每个testid对应相同的id,path,priority,tag,summary(描述),tag,description, 但是一个testid可能有多个步骤,每个步骤对应一个结果

    • 根据上述我们可以设计xmind的测试用例模板

    脚本编写

    • 我们分析后,就可以为我们编写定制版本的测试用例,首先我们设计好xmind的测试模板后,我们需要解析xmind,这边使用xmindparser, openpyxl

    • 解析xmind

    pip install xmindparser
    
    from xmindparser import xmind_to_dict
    data = xmind_to_dict("test module.xmind")
    print(data)
    

    • 分析输入的列表信息,我们只需要提取我们需要的信息就可以,这边需要花点耐心去获取,并不难,这边就省略了,主要用到了for循环,以及对列表的信息分析

    xmind_testcase.py

    __author__ = 'wangxiao'
    
    import json
    
    from xmindparser import xmind_to_dict
    
    from utils.execl_config import ExcelConfig
    
    
    class ExportXmindExcel:
        def __init__(self):
            self.name = input("请输入绝对路径:")
            self.data = xmind_to_dict(self.name)
            # 获取测试用例dict格式
            self.dict_data = self.data[0]
            # 实例化execlConfig
            self.execl = ExcelConfig()
    
    
        # 提取多少条case
        def get_cases_nums(self):
            nums = self.dict_data['topic']['topics'][0]['topics']
            return len(nums)
    
        # 提取cases list
        def get_cases(self):
            return self.dict_data['topic']['topics'][0]['topics']
    
        # 提取Test Repository Path
        def get_case_path(self, i):
            self.casesList = self.get_cases()
            index = self.casesList[i]['title']
            path = self.casesList[i]['topics'][0]['topics'][0]['title']
            tag = self.casesList[i]['topics'][1]['topics'][0]['title']
            priority = self.casesList[i]['topics'][2]['topics'][0]['title']
            summary = self.casesList[i]['topics'][3]['topics'][0]['title']
            des = self.casesList[i]['topics'][5]['topics'][0]['title']
            return index, path, tag, priority, summary, des
    
        # 提取action = (步骤+对应的步骤结果)
        def get_actions(self, num):
            return self.casesList[num]['topics'][4]['topics']
    
        # 处理action,分别提取步骤 = 结果
        def get_case_detail(self, num, list):
            step = list[num]['title']
            res = list[num]['topics'][0]['title']
            return step, res
        
        # 把每次循环的数据,放到字典中
        def converse_dict(self, num):
            index, path, tag, priority, summary, des = self.get_case_path(num)
            case_dict = {}
            case_dict['index'] = index
            case_dict['path'] = path
            case_dict['tag'] = tag
            case_dict['priority'] = priority
            case_dict['summary'] = summary
            case_dict['des'] = des
            case_dict['action'] = self.get_actions(num)
            return case_dict
    
        # 执行函数
        def run(self):
            nums = self.get_cases_nums()
            # 声明全局变量
            global number
            # 写入单元格从第二行开始
            number = 2
            for i in range(0, nums):
                cases = self.converse_dict(i)
                actions = cases['action']
                nums2 = len(actions)
                for j in range(0, nums2):
                    args = self.get_case_detail(j, actions)
                    self.execl.run(number, args, index=cases['index'], path=cases['path'], tag=cases['tag'], priority=cases['priority'], summary=cases['summary'], des=cases['des'])
                    number +=1
            print("--------------execl已经生成---------------")
    
    main = ExportXmindExcel()
    main.run()
    
    
    

    execl_config.py

    __author__ = 'wangxiao'
    
    import openpyxl
    
    
    class ExcelConfig:
        ID = 1
        PATH = 2
        PRIORITY = 3
        TAG = 4
        SUMMARY = 5
        ACTION = 6
        RESULT = 7
        DESCRIPTION = 8
    
        def __init__(self):
            self.wb = openpyxl.Workbook()
            self.sh = self.wb.create_sheet('test_case')
    
        def init_execl(self):
            self.sh.cell(row=1, column=self.ID, value='Test ID')
            self.sh.cell(row=1, column=self.PATH, value='Test Repository Path')
            self.sh.cell(row=1, column=self.PRIORITY, value='Priority')
            self.sh.cell(row=1, column=self.TAG, value='Tag')
            self.sh.cell(row=1, column=self.SUMMARY, value='Summary')
            self.sh.cell(row=1, column=self.ACTION, value='Action')
            self.sh.cell(row=1, column=self.RESULT, value='Result')
            self.sh.cell(row=1, column=self.DESCRIPTION, value='Description')
    
        def write_cases(self, i, *args, **kwargs):
            self.sh.cell(row=i, column=self.ID, value=str(kwargs['index']))
            self.sh.cell(row=i, column=self.PATH, value=kwargs['path'])
            self.sh.cell(row=i, column=self.PRIORITY, value=kwargs['priority'])
            self.sh.cell(row=i, column=self.TAG, value=kwargs['tag'])
            self.sh.cell(row=i, column=self.SUMMARY, value=kwargs['summary'])
            self.sh.cell(row=i, column=self.DESCRIPTION, value=kwargs['des'])
    
            self.sh.cell(row=i, column=self.ACTION, value=args[0][0])
            self.sh.cell(row=i, column=self.RESULT, value=args[0][1])
    
    
        def run(self, i, *args, **kwargs):
            self.init_execl()
            self.write_cases(i, *args, **kwargs)
            self.wb.save('case.xlsx')
    
    
    

    打包成小工具

    • 打包成小工具,方便其他人使用这个小工具
    pip insall pyinstaller
    # 打包命令
    pyinstaller -F xmind_testcase.py -p execl_config.py
    
    • 效果演示

    总结

    项目只是参考,每个公司需要都不一样,主干是一样的,主要是去分析

  • 相关阅读:
    新学期随笔——脚踏实地
    买书方案
    课程总结和建议
    梦断代码阅读笔记03
    梦断代码阅读笔记02
    构建之法阅读笔记06
    【洛谷5284】[十二省联考2019] 字符串问题(后缀树优化建边)
    【BZOJ3514】Codechef MARCH14 GERALD07加强版(LCT_主席树)
    【BZOJ1487】[HNOI2009]无归岛(仙人掌 DP)
    【洛谷3239_BZOJ4008】[HNOI2015] 亚瑟王(期望 DP)
  • 原文地址:https://www.cnblogs.com/totoro-cat/p/13571340.html
Copyright © 2020-2023  润新知