欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 八卦 > Xmind思维导图生成测试用例并导入禅道

Xmind思维导图生成测试用例并导入禅道

2025/10/27 15:41:14 来源:https://blog.csdn.net/kely6666/article/details/139831669  浏览:    关键词:Xmind思维导图生成测试用例并导入禅道

工具:xmind2testcase  

该工具基于 Python 实现,通过制定测试用例通用模板, 然后使用 XMind 这款广为流传且开源的思维导图工具进行用例设计。

项目地址:GitHub - zhuifengshen/xmind2testcase: XMind2TestCase基于python实现,提供了一个高效测试用例设计的解决方案!

有俩种使用方法,一种是使用pip install xmind2testcase 下载包,适用于不需要对源码做更改的情况。注意:使用此方法需要保证版本为Xmind8,否则会出现无法解析的情况。

第二种使用方法,就是将项目克隆到本地,对源码进行部分更改,来适配高版本Xmind。我的版本是最新的xmind2024,下面则是基于此来进行配置。

一、直接把项目git clone下来

1、先fork到自己的仓库

2、拉取代码到本地

3、对文件结构进行调整

修改目录后就不要使用命令行模式。

调整完后,项目启动命令为:python application.py  

4、修改xmind2testcase下的utils.py文件,把这个方法改成如下:

def get_xmind_testsuites(xmind_file):"""Load the XMind file and parse to `xmind2testcase.metadata.TestSuite` list"""xmind_file = get_absolute_path(xmind_file)'''适配xmind高版本'''if is_xmind_zen(xmind_file):xmind_content_dict = xmind_to_dict(xmind_file)else:workbook = xmind.load(xmind_file)xmind_content_dict = workbook.getData()logging.debug("loading XMind file(%s) dict data: %s", xmind_file, xmind_content_dict)if xmind_content_dict:testsuites = xmind_to_testsuites(xmind_content_dict)return testsuiteselse:logging.error('Invalid XMind file(%s): it is empty!', xmind_file)return []

5、下载xmindparser包,并将该目录(位于\Lib\site-packages\xmindparser)复制到项目根目录下

pip install xmindparser

 

修改其中zenreader.py文件,直接使用下面代码全部覆盖

import json
from zipfile import ZipFilefrom . import config, cachecontent_json = "content.json"def open_xmind(file_path):"""open xmind as zip file and cache the content."""cache.clear()with ZipFile(file_path) as xmind:for f in xmind.namelist():for key in [content_json]:if f == key:cache[key] = xmind.open(f).read().decode('utf-8')def get_sheets():"""get all sheet as generator and yield."""for sheet in json.loads(cache[content_json]):yield sheetdef sheet_to_dict(sheet):"""convert a sheet to dict type."""topic = sheet['rootTopic']result = {'title': sheet['title'], 'topic': node_to_dict(topic), 'structure': get_sheet_structure(sheet)}if config['showTopicId']:result['id'] = sheet['id']if config['hideEmptyValue']:result = {k: v for k, v in result.items() if v}return resultdef get_sheet_structure(sheet):root_topic = sheet['rootTopic']return root_topic.get('structureClass', None)def node_to_dict(node):"""parse Element to dict data type."""child = children_topics_of(node)d = {'id': '','title': node.get('title', ''),'note': note_of(node),'markers': maker_of(node),'label': labels_of(node),'link': link_of(node),'image': image_of(node),'comment': None# 'callout': callout_of(node)}if d['link']:if d['link'].startswith('xmind'):d['link'] = '[To another xmind topic!]'if d['link'].startswith('xap:attachments'):del d['link']d['title'] = '[Attachment]{0}'.format(d['title'])if child:d['topics'] = []for c in child:d['topics'].append(node_to_dict(c))if config['showTopicId']:d['id'] = node['id']# if config['hideEmptyValue']:# d = {k: v for k, v in d.items() if v or k == 'title'}return ddef children_topics_of(topic_node):children = topic_node.get('children', None)if children:return children.get('attached', None)def link_of(node):return node.get('href', None)def image_of(node):return node.get('image', None)def labels_of(node):return node.get('labels', None)def note_of(node):note_node = node.get('notes', None)if note_node:note = note_node.get('plain', None)if note:return note.get('content', '').strip()def maker_of(topic_node):makers = []maker_node = topic_node.get('markers', None)if maker_node is not None:for maker in maker_node:makers.append(maker.get('markerId', None))return makersdef callout_of(topic_node):callout = topic_node.get('children', None)if callout:callout = callout.get('callout', None)if callout:return [x['title'] for x in callout]

 6、启动

参考博客

http://t.csdnimg.cn/D9cD0

http://t.csdnimg.cn/7Xqek

一些感想:

.xmind文件实际上就是一个压缩包。xmindparser大致呢就是获取到其中的content.json文件用来解析。在学习过程中,把.xmind文件后缀改为zip可以发现其中包含content.json文件。其内容就是我的思维导图的内容。

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词