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编程实现的简单神经网络算法示例
Jan 26 Python
对numpy 数组和矩阵的乘法的进一步理解
Apr 04 Python
python 检查是否为中文字符串的方法
Dec 28 Python
用Python实现大文本文件切割的方法
Jan 12 Python
Python/Django后端使用PIL Image生成头像缩略图
Apr 30 Python
Django框架实现的分页demo示例
May 25 Python
python用线性回归预测股票价格的实现代码
Sep 04 Python
pytorch .detach() .detach_() 和 .data用于切断反向传播的实现
Dec 27 Python
如何在python开发工具PyCharm中搭建QtPy环境(教程详解)
Feb 04 Python
Python如何将装饰器定义为类
Jul 30 Python
正确的理解和使用Django信号(Signals)
Apr 14 Python
python非标准时间的转换
Jul 25 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 安全检测代码片段(分享)
2013/07/05 PHP
[企业公众号]升级到[企业微信]之后发送消息失败的解决方法
2017/06/30 PHP
在Laravel中使用DataTables插件的方法
2018/05/29 PHP
Django 标签筛选的实现代码(一对多、多对多)
2018/09/05 PHP
PHP实现无限极分类的两种方式示例【递归和引用方式】
2019/03/25 PHP
JS+flash实现chrome和ie浏览器下同时可以复制粘贴
2013/09/22 Javascript
动态标签 悬停效果 延迟加载示例代码
2013/11/21 Javascript
jQuery实现表格元素动态创建功能
2017/01/09 Javascript
借助node实战JSONP跨域实例
2017/03/30 Javascript
d3.js实现立体柱图的方法详解
2017/04/28 Javascript
通过V8源码看一个关于JS数组排序的诡异问题
2017/08/14 Javascript
手写Node静态资源服务器的实现方法
2018/03/20 Javascript
Vue项目中跨域问题解决方案
2018/06/05 Javascript
前端axios下载excel文件(二进制)的处理方法
2018/07/31 Javascript
手写Vue2.0 数据劫持的示例
2021/03/04 Vue.js
[01:01:43]EG vs VP 2018国际邀请赛淘汰赛BO3 第二场 8.24
2018/08/25 DOTA
python中的列表推导浅析
2014/04/26 Python
python命令行参数解析OptionParser类用法实例
2014/10/09 Python
python with提前退出遇到的坑与解决方案
2018/01/05 Python
详解Django中间件执行顺序
2018/07/16 Python
基于python历史天气采集的分析
2019/02/14 Python
python字典改变value值方法总结
2019/06/21 Python
Selenium基于PIL实现拼接滚动截图
2020/04/10 Python
python 基于UDP协议套接字通信的实现
2021/01/22 Python
爱尔兰电脑、家电和家具购物网站:Buy It Direct
2019/07/09 全球购物
实习生自荐信范文
2013/11/13 职场文书
自荐信格式写作方法有哪些呢
2013/11/20 职场文书
护理专业学生的求职信范文
2013/12/11 职场文书
入学生会自荐书范文
2014/02/05 职场文书
大班开学家长寄语
2014/04/04 职场文书
欢迎标语大全
2014/06/21 职场文书
清明节网上祭英烈寄语2015
2015/03/04 职场文书
小学公民道德宣传日活动总结
2015/03/23 职场文书
2015年财务个人工作总结范文
2015/05/22 职场文书
k8s部署redis cluster集群的实现
2021/06/24 Redis
SQL之各种join小结详细讲解
2021/08/04 MySQL