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


Posted in Python onMarch 31, 2018

写在前面:通过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 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获取测试节点和属性的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现逆序输出一个数字的示例讲解
Jun 25 Python
Python多进程原理与用法分析
Aug 21 Python
Python多进程池 multiprocessing Pool用法示例
Sep 07 Python
Python numpy.array()生成相同元素数组的示例
Nov 12 Python
python绘制简单彩虹图
Nov 19 Python
在python中利用最小二乘拟合二次抛物线函数的方法
Dec 29 Python
Python当中的array数组对象实例详解
Jun 12 Python
python实现淘宝购物系统
Oct 25 Python
Python 实现黑客帝国中的字符雨的示例代码
Feb 20 Python
彻底搞懂 python 中文乱码问题(深入分析)
Feb 28 Python
使用tensorflow进行音乐类型的分类
Aug 14 Python
浅谈anaconda python 版本对应关系
Oct 07 Python
Python Xml文件添加字节属性的方法
Mar 31 #Python
Python简单生成随机数的方法示例
Mar 31 #Python
用python 批量更改图像尺寸到统一大小的方法
Mar 31 #Python
使用Python读取安卓手机的屏幕分辨率方法
Mar 31 #Python
python获取网页中所有图片并筛选指定分辨率的方法
Mar 31 #Python
python如何将图片转换为字符图片
Aug 19 #Python
Pyinstaller将py打包成exe的实例
Mar 31 #Python
You might like
PHP 5.0对象模型深度探索之绑定
2006/09/05 PHP
php cout&amp;lt;&amp;lt;的一点看法
2010/01/24 PHP
php通过文件流方式复制文件的方法
2015/03/13 PHP
PHP实现的mysql读写分离操作示例
2018/05/22 PHP
tp5(thinkPHP5)框架连接数据库的方法示例
2018/12/24 PHP
PHP数组遍历的几种常见方式总结
2019/02/15 PHP
在JavaScript中遭遇级联表达式陷阱
2007/03/08 Javascript
jQuery总体架构的理解分析
2011/03/07 Javascript
javascript 函数声明与函数表达式的区别介绍
2013/10/05 Javascript
ie与ff下的event事件使用介绍
2013/11/25 Javascript
Area 区域实现post提交数据的js写法
2014/04/22 Javascript
学习AngularJs:Directive指令用法(完整版)
2016/04/26 Javascript
EasyUI在表单提交之前进行验证的实例代码
2016/06/24 Javascript
jquery实现网页定位导航
2016/08/23 Javascript
vue监听键盘事件的快捷方法【推荐】
2018/07/11 Javascript
在Node.js下运用MQTT协议实现即时通讯及离线推送的方法
2019/01/24 Javascript
koa2服务端使用jwt进行鉴权及路由权限分发的流程分析
2019/07/22 Javascript
layui递归实现动态左侧菜单
2019/07/26 Javascript
基于ts的动态接口数据配置的详解
2019/12/18 Javascript
vue组件入门知识全梳理
2020/09/21 Javascript
[46:55]Ti4 冒泡赛第二轮 LGD vs C9
2014/07/14 DOTA
Python中自定义函数的教程
2015/04/27 Python
Python中for循环和while循环的基本使用方法
2015/08/21 Python
在cmd中运行.py文件: python的操作步骤
2018/05/12 Python
对Python3使运行暂停的方法详解
2019/02/18 Python
python3中eval函数用法使用简介
2019/08/02 Python
浅谈keras 模型用于预测时的注意事项
2020/06/27 Python
Scrapy 配置动态代理IP的实现
2020/09/28 Python
家长给老师的道歉信
2014/01/13 职场文书
建筑工程技术专业求职信
2014/07/16 职场文书
行政处罚事先告知书
2015/07/01 职场文书
导游词之广州陈家祠
2019/10/21 职场文书
win10下go mod配置方式
2021/04/25 Golang
一文搞懂redux在react中的初步用法
2021/06/09 Javascript
【海涛dota】偶遇拉娜娅 质量局德鲁伊第一视角解说
2022/04/01 DOTA
Redis特殊数据类型HyperLogLog基数统计算法讲解
2022/06/01 Redis