python使用xmindparser解析xmind文件并统计测试案例个数

一、前言

最近做了点测试开发的工作,由于python属于脚本语言,易学好用,老大要求我们都要会python,所以终于给了自己一个机会,把一直想学的python学了点皮毛,正好测试同学有需求,需要将xmind解析成一条条的测试案例再调用测试平台接口将测试案例一键导入的测试平台,以前如果有上百个case就都要手动一条条的输入,很麻烦,这些就方便了。这次算是小试牛刀了。

高手觉得有更好的写法还请不吝赐教,写的过程中也遇到不少问题,好在都一一克服了。

二、安装xmindparser

我在iterm2上执行安装xmindparser不好使,但在pycharm里面却可以安装成功,我不知道为啥
在这里插入图片描述
iTerm2上安装
在这里插入图片描述

三、xmind文件内容

在这里插入图片描述

四、解析


# 模块名称(文件名为:parse_xmind.py)
import requests
import xmindparser

"""
@desc:   定义xmind中测试用例和质保平台对应的字段的类
@author: fanhuifang
@date:   2022-07-21
"""


class SaveTestCaseParam(object):
	def __init__(self):
		self.case_name = ""
		self.test_case_level = ""
		self.pre_condition = ""
		self.step = ""
		self.expected_results = ""


"""
@desc:   读取整个测试用例的根节点和对应的子节点
@author: fanhuifang
@date:   2022-07-21
"""


def xmind_parse_file(file_path, belong_to_system, belong_to_module, type, belong_platform):
	content_dict = xmindparser.xmind_to_dict(file_path)
	for index1 in content_dict:
		node_lists = index1['topic']['topics']
		case_list = []
		read_node(node_lists, case_list)
    return case_list


"""
@desc:   拼装xmind中的每一条测试用例
@author: fanhuifang
@date:   2022-07-21
"""


def read_node(node_lists, case_list):
	if len(node_lists) >= 1:
		for node in node_lists:
			# 如何知道遍历的是最后一个节点
			# 当前的node的所有的key中没有topics,那就说明是最后一个节点了
			if not list(node.keys()).__contains__("topics"):
				test_case_param = SaveTestCaseParam()
				for key in node:
					if key == "title":
						setattr(test_case_param, 'case_name', node[key])
						setattr(test_case_param, 'step', node[key])
						setattr(test_case_param, 'expected_results', node[key])
						continue
					if key == "makers":
						setattr(test_case_param, 'test_case_level', node[key][0])

				# 添加到list中
				case_list.append(test_case_param)

			# 倒数第二个节点
			else:
				if list(node.keys()).__contains__("makers"):
					test_case_param = SaveTestCaseParam()
					for key in node:
						if key == "title":
							setattr(test_case_param, 'case_name', node[key])
							continue
						if key == 'topics':
							parent_node = node[key]
							for sub_node_key in parent_node:
								for key1 in sub_node_key:
									if key1 == "title":
										title_content = sub_node_key['title']
										if "前置条件" in title_content:
											setattr(test_case_param, 'pre_condition', title_content)
											continue
										if "用例步骤" in title_content:
											setattr(test_case_param, 'step', title_content)
											continue
										if "预期结果" in title_content:
											setattr(test_case_param, 'expected_results', title_content)
							continue
						if key == 'makers':
							setattr(test_case_param, 'test_case_level', node[key][0])
					# 添加到list中
					case_list.append(test_case_param)
				else:
					for key in node:
						if key == 'topics':
							read_node(node[key], case_list)


"""
@desc:   主入口
@author: fanhuifang
@date:   2022-07-21
"""

if __name__ == '__main__':
	# 文件路径
	file_path = "/Users/fanhuifang/Documents/ziroom/test_case_temple.xmind"
	case_list = xmind_parse_file(file_path)
	print("测试案例个数:", len(case_list))

注:我这里只展示了解析的地方,发送请求就很简单了,就不展示了。

-----------------------------------你知道的越多,不知道的越多--------------------------------

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Python可以使用xmind模块来解析和操作XMind全息思维导图文件XMind是一种常见的思维导图文件格式,它可以帮助我们组织和展示复杂的信息关系。 Pythonxmind模块允许我们使用Python代码读取和修改XMind文件。我们可以打开XMind文件,遍历思维导图的内容,并且可以查找和修改各个节点的属性,如文本内容、图标、链接等。 首先,我们需要使用pip安装xmind模块,然后可以在代码中导入xmind模块来使用。我们可以使用open_workbook函数打开一个XMind文件,然后通过get_sheets函数获取所有的工作表。 然后,我们可以使用get_topics函数获取工作表中所有的主题节点,这些节点代表思维导图的各个分支。我们可以遍历这些主题节点,获取它们的文本内容、样式和链接等。 除了遍历节点,我们还可以使用add_topics函数来添加新的主题节点,使用remove_topics函数来删除节点,使用set_detail函数来修改节点的文本内容,使用set_hyperlink函数来添加链接,还可以使用set_position函数来设置节点的位置等。 通过这些功能,我们可以轻松地解析和操作XMind文件,实现自定义的数据处理和展示效果。例如,我们可以读取一个XMind文件,将其中的节点信息导出为其他文件格式,或者根据节点的关系生成相应的图形展示。 总而言之,Python可以通过xmind模块来解析XMind思维导图文件,提供了强大的功能和灵活的操作方式,帮助我们更好地利用思维导图进行信息整理和展示。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值