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 相关文章推荐
pygame学习笔记(6):完成一个简单的游戏
Apr 15 Python
利用Python爬取可用的代理IP
Aug 18 Python
Python在不同目录下导入模块的实现方法
Oct 27 Python
关于Tensorflow中的tf.train.batch函数的使用
Apr 24 Python
如何在python字符串中输入纯粹的{}
Aug 22 Python
对Python发送带header的http请求方法详解
Jan 02 Python
Python可变和不可变、类的私有属性实例分析
May 31 Python
pandas 层次化索引的实现方法
Jul 06 Python
Python使用os.listdir和os.walk获取文件路径
May 21 Python
python如何查看安装了的模块
Jun 23 Python
python 下划线的不同用法
Oct 24 Python
Python进程池与进程锁之语法学习
Apr 11 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
Discuz 模板语句分析及知识技巧
2009/08/21 PHP
批量获取memcache值并按key的顺序返回的实现代码
2011/06/14 PHP
php使用parse_url和parse_str解析URL
2015/02/22 PHP
Ecshop 后台添加新功能栏目及管理权限设置教程
2017/11/21 PHP
PHP常用函数之base64图片上传功能详解
2019/10/21 PHP
js 动态添加标签(新增一行,其实很简单,就是几个函数的应用)
2009/03/26 Javascript
Javascript学习笔记7 原型链的原理
2010/01/11 Javascript
基于jsTree的无限级树JSON数据的转换代码
2010/07/27 Javascript
妙用Jquery的val()方法
2012/06/27 Javascript
vue.js将unix时间戳转换为自定义时间格式
2017/01/03 Javascript
bootstrap table分页模板和获取表中的ID方法
2017/01/10 Javascript
关于jQuery中fade(),show()起始位置的一点小发现
2017/04/25 jQuery
JavaScript模拟实现封装的三种方式及写法区别
2017/10/27 Javascript
Vue服务器渲染Nuxt学习笔记
2018/01/31 Javascript
JQuery Ajax动态加载Table数据的实例讲解
2018/08/09 jQuery
nodejs更新package.json中的dependencies依赖到最新版本的方法
2018/10/10 NodeJs
Vuex中实现数据状态查询与更改
2019/11/08 Javascript
vue 监听窗口变化对页面部分元素重新渲染操作
2020/07/28 Javascript
利用js实现简易红绿灯
2020/10/15 Javascript
JavaScript实现商品评价五星好评
2020/11/30 Javascript
python实现的一个火车票转让信息采集器
2014/07/09 Python
python常见排序算法基础教程
2017/04/13 Python
python读取并定位excel数据坐标系详解
2019/06/26 Python
Pandas时间序列:重采样及频率转换方式
2019/12/26 Python
pytorch加载自定义网络权重的实现
2020/01/07 Python
Python GUI库PyQt5图形和特效样式QSS介绍
2020/02/25 Python
Python WebSocket长连接心跳与短连接的示例
2020/11/24 Python
详解Python模块化编程与装饰器
2021/01/16 Python
8款精美的CSS3表单设计(登录表单/下拉选择/按钮附演示及源码)
2013/02/04 HTML / CSS
英语专业学生个人求职信范文
2014/01/06 职场文书
一个大学生十年的职业规划
2014/01/17 职场文书
专项法律服务方案
2014/06/11 职场文书
2014年个人工作总结模板
2014/12/15 职场文书
《平移和旋转》教学反思
2016/02/19 职场文书
使用Bandicam录制鼠标指针并附带点击声音,还可以添加点击动画效果
2022/04/11 数码科技
大脑的记忆过程在做数据压缩,不同图形也有共同的记忆格式
2022/04/29 数码科技