写在前面:通过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文件
1
|
from xml.dom.minidom import parse
|
打开xml文档,
1
|
DOMTree = xml.dom.minidom.parse(data_path)
|
根据xml文档,得到文档元素的对象
1
|
data = DOMTree.documentElement
|
获取节点列表
1
|
nodelist = data.getElementsByTagName(大类名称)
|
获取第一个节点的子节点列表
1
|
childlist = nodelist[0].childNodes
|
获取XML节点属性值
1
|
node.getAttribute(AttributeName)
|
获取XML节点对象集合
1
|
node.getElementsByTagName(TagName)
|
返回子节点列表
1
|
node.childNodes
|
获取XML节点值
1
|
node.childNodes[index].nodeValue
|
访问第一个节点
1
|
node.firstChild ,等价于pagexml.childNodes[0]
|
访问元素属性 例如:
1
2
3
|
Node.attributes["id"]
a.name #就是上面的 "id"
a.value #属性的值
|
以下为具体的demo内容:
方法调用
1
2
3
4
5
|
#方法调用
text = get_data_vaule('account','type','createText','text')
print text
#结果
test data
|
xml文件
1
2
3
4
5
6
7
8
9
10
|
<? 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
方法文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
#!/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获取测试节点和属性的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/weixin_39008941/article/details/76037730