# 不知道小伙伴们在工作中有没有遇到需要把数据转化为xmind展示的需求,下面是我工作中遇到的,自我感觉可以记录并分享的内容(网上资料貌似不多)。
首先:
? ? ? ? 想直接通过excel等等形式,想直接转化为xmind,方法也有:
①直接把excel全部内容拷贝到xmind界面,自然就会生成对应层级的xmind数据。
②暂时想到的是:通过生成Markdown,再导入到xmind中即可。
下面就是相关的代码实现:
相关业务逻辑:我在其他模块解析了业务的接口文档,自动生成了覆盖各个接口的基础用例,我这里就针对于写入excel的 [dict] 进行解析,cases_topic:是服务名称。
? 需要注意的是,markdown->xmind的格式比较特殊:
????????# 代表中心主题;## 代表二级(#与内容中间有空格),以此类推;"- xxx"(中间有空格)代表后续的层级内容,每一层级的内容,需要有2次回车+N个Tab,(N取决于你的内容在第几层级)
class MarkDownParser:
def __init__(self, cases_topic):
self.space = ' '
self.enter = '\n'
self.cases_topic = cases_topic
self.save_path = r'./excel_to_markdown.md'
def markdown_parse(self, cases_list: list):
with open(self.save_path, 'w', encoding='utf-8')as file:
markdown_topic = self.markdown_title('main', self.cases_topic)
file.write(markdown_topic + self.enter)
temp_scope = ''
for cases in cases_list:
cases_scope = cases.get('case_scope')
if temp_scope != cases_scope:
temp_scope = cases_scope
file.write(self.markdown_title('sub', temp_scope) + self.enter)
else:
pass
for _key, _value in self.index_table().items():
file.write(self.space * _value)
file.write(self.markdown_details(cases.get(_key)))
file.close()
@staticmethod
def markdown_title(level, content):
if level == 'main':
_format = '#' + ' ' + content
else:
_format = '##' + ' ' + content
return _format
def markdown_details(self, content):
_format = '-' + ' ' + content + self.enter * 2
return _format
@staticmethod
def index_table():
cases_order_list = ['method', 'url', 'case_type', 'case_name', 'case_id', 'need_token'] # 后期可抽到配置模块中自主配置,不要写死
index_dict = {}
for index in range(cases_order_list.__len__()):
index_dict.update({cases_order_list[index]: index})
return index_dict
这只是个小demo,后续还要继续丰富;
这可能看起来觉得很菜,不喜勿喷哈,欢迎各位大神指正,也欢迎各位提出宝贵的建议。
|