python 通过xml获取测试节点和属性的实例
自动化测试中的使用场景: 1. 经常变动的测试数据; 2. 数据量大,不方便放在脚本中; 3. 数据作用于多个地方; 4. 相同测试用例,可以使用不同的数据; 5. 例:不稳定,后续改动较多功能;容易出错的功能 XML特征 • 具有自我描述性,本身不做任何事情 • 声明部分 <?xml version="1.0" encoding="UTF-8"?> • 有开就有闭,成对出现 <data></data> • 可以有属性值 <data type='demo'></data> • xml用于传输数据 <data type='demo'> message </data> • 可以嵌入子标签 <data type='demo'><text>message</text></data> python获取xml文件方法集合 引入模块处理xml文件 from xml.dom.minidom import parse 打开xml文档, DOMTree = xml.dom.minidom.parse(data_path) 根据xml文档,得到文档元素的对象 data = DOMTree.documentElement 获取节点列表 nodelist = data.getElementsByTagName(大类名称) 获取第一个节点的子节点列表 childlist = nodelist[0].childNodes 获取XML节点属性值 node.getAttribute(AttributeName) 获取XML节点对象集合 node.getElementsByTagName(TagName) 返回子节点列表 node.childNodes 获取XML节点值 node.childNodes[index].nodeValue 访问第一个节点 node.firstChild,等价于pagexml.childNodes[0] 访问元素属性 例如: Node.attributes["id"] a.name #就是上面的 "id" a.value #属性的值 以下为具体的demo内容: 方法调用 #方法调用 text = get_data_vaule('account','type','createText','text') print text #结果 test data xml文件 <?xml version="1.0" encoding="UTF-8"?> <data> <account type='createText'> <text>test data</text> </account> <account type='email'> <username>22222@qq.com</username> <password>22222111</password> </account> </data> 下面方法相对应取数据的格式,# style = xml中的大类 ; typename = 细分属性; typevalue = 细分属性的值; valuename = xml文件,需要获取的值的tag; 如果需要获取相对应的上面XML文件中 “test data”的值,那么style = data ; typename = type; typevalue = createText; valuename = text “22222@qq.com”的值,那么style = data ; typename = type; typevalue = email; valuename = username 方法文件 #!/usr/bin/python # -*- coding: UTF-8 -*- import unittest import os import time from xml.dom.minidom import parse import xml.dom.minidom #获取xml文件地址 path = os.path.abspath('.') data_path = os.path.join(path,'features/data/data.xml') #获取xml文件地址 DOMTree = xml.dom.minidom.parse(data_path) data = DOMTree.documentElement def get_attrvalue(node,attrname): return node.getAttribute(attrname) # style = xml中的大类 ; typename = 细分属性; typevalue = 细分属性的值; valuename = xml文件,需要获取的值的tag; def get_data_vaule(style,typename,typevalue,valuename): nodelist = data.getElementsByTagName(style) for node in nodelist: if typevalue == node.getAttribute(typename): node_name = node.getElementsByTagName(valuename) value = node_name[0].childNodes[0].nodeValue print value return value return 以上这篇python 通过xml获取测试节点和属性的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持编程小技巧。 您可能感兴趣的文章:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |