在通过ant批量执行jmeter过程中,因为大家分模块把用例都放在不同文件夹,而build.xml文件只能执行固定某一文件夹路径下的用例,
所以需要在执行ant前,先收集当前一共有几个文件夹名称,然后写入到指定的位置中,才能执行所有的用例
import os
from xml.etree.ElementTree import ElementTree,Element
def read_xml(in_path):
'''''读取并解析xml文件
in_path: xml路径
return: ElementTree'''
tree = ElementTree()
tree.parse(in_path)
return tree
def write_xml(tree, out_path):
'''''将xml文件写出
tree: xml树
out_path: 写出路径'''
tree.write(out_path, encoding="utf-8", xml_declaration=True)
def if_match(node, kv_map):
'''''判断某个节点是否包含所有传入参数属性
node: 节点
kv_map: 属性及属性值组成的map'''
for key in kv_map:
if node.get(key) != kv_map.get(key):
return False
return True
# ----------------search -----------------
def find_nodes(tree, path):
'''''查找某个路径匹配的所有节点
tree: xml树
path: 节点路径'''
return tree.findall(path)
def get_node_by_keyvalue(nodelist, kv_map):
'''''根据属性及属性值定位符合的节点,返回节点
nodelist: 节点列表
kv_map: 匹配属性及属性值map'''
result_nodes = []
for node in nodelist:
if if_match(node, kv_map):
result_nodes.append(node)
return result_nodes
def create_node(tag, property_map):
'''新造一个节点
tag:节点标签
property_map:属性及属性值map
content: 节点闭合标签里的文本内容
return 新节点'''
element = Element(tag, property_map)
# element.text = content
return element
def add_child_node(nodelist, element):
'''''给一个节点添加子节点
nodelist: 节点列表
element: 子节点'''
for node in nodelist:
node.append(element)
def file_name(file_path):
for root, dirs, files in os.walk(file_path):
l.append(root)
return l
if __name__ == "__main__":
################ 1. 读取xml文件 ##########
tree = read_xml("frombuild.xml")
################ 2. 属性修改 ###############
nodes = find_nodes(tree, "target/jmeter") # 找到父节点
# print(nodes)
result_nodes = get_node_by_keyvalue(nodes, {"jmeterhome": "${jmeter.home}"}) # 通过属性准确定位子节点
# print(result_nodes)
################# 3.节点修改 ##############
file_name (r'D:\project\pc_requests\dev\WeiDian-Jmeter\case')
for i in range(len(l)):
a = create_node("testplans",{"dir": l[i], "includes": "*.jmx"}) # 新建节点
add_child_node(result_nodes, a) # 插入到父节点之下
write_xml(tree, "./build.xml")
https://blog.csdn.net/wsp_1138886114/article/details/86576900
在通过ant批量执行jmeter过程中,因为大家分模块把用例都放在不同文件夹,而build.xml文件只能执行固定某一文件夹路径下的用例,所以需要在执行ant前,先收集当前一共有几个文件夹名称,然后写入到指定的位置中,才能执行所有的用例import osfrom xml.etree.ElementTree import ElementTree,Elementdef read_xml(in_path): '''''读取并解析xml文件 in_path: xml..
import xml.dom.minidom as xdc
from xml.dom.minidom import Document
from xml.etree import ElementTree as ET
from xml.dom.minidom import parse
#上面这几个忘了哪个有用了,干脆都加上来了
#创建过程
domTree = Document()#创建xml
rootNode = domTree.createElement("fr
Overview
这篇博客内容将包括对XML文件的解析、追加新元素后写入到XML,以及更新原XML文件中某结点的值。使用的是python的xml.dom.minidom包,详情可见其官方文档:xml.dom.minidom官方文档。全文都将围绕以下的customer.xml进行操作:
<?xml version="1.0" encoding="utf-8" ?>
<!-- Thi...
tree = ET.parse('students.xml')
root = tree.getroot() # 使用getroot()获取根节点,得到的是一个Element对象
#root = ET.fromstring(country_data_as_string) #从字符串变量中读取,返回的是El...