首页 > 编程 > Python > 正文

python 通过xml获取测试节点和属性的实例

2020-01-04 15:29:03
字体:
来源:转载
供稿:网友

写在前面:通过xml获取测试数据,主要是为了使数据参数化。测试脚本和测试数据分离,使得脚本清晰容易维护,方便排查问题。

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>11111@qq.com</username>    <password>11111111</password>  </account></data>

下面方法相对应取数据的格式,# style = xml中的大类 ; typename = 细分属性; typevalue = 细分属性的值; valuename = xml文件,需要获取的值的tag;

如果需要获取相对应的上面XML文件中

“test data”的值,那么style = data ; typename = type; typevalue = createText; valuename = text “11111@qq.com”的值,那么style = data ; typename = type; typevalue = email; valuename = username

方法文件

#!/usr/bin/python# -*- coding: UTF-8 -*-import unittestimport osimport timefrom xml.dom.minidom import parseimport 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.documentElementdef 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获取测试节点和属性的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持VEVB武林网。


注:相关教程知识阅读请移步到python教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表