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实现apahce网站日志分析示例
Apr 02 Python
Python使用PyGreSQL操作PostgreSQL数据库教程
Jul 30 Python
Python列表list数组array用法实例解析
Oct 28 Python
利用python获取Ping结果示例代码
Jul 06 Python
django模板语法学习之include示例详解
Dec 17 Python
Python3利用print输出带颜色的彩色字体示例代码
Apr 08 Python
关于Numpy数据类型对象(dtype)使用详解
Nov 27 Python
tensorflow -gpu安装方法(不用自己装cuda,cdnn)
Jan 20 Python
Python unittest基本使用方法代码实例
Jun 29 Python
学生如何注册Pycharm专业版以及pycharm的安装
Sep 24 Python
Python实现Word文档转换Markdown的示例
Dec 22 Python
python-for x in range的用法(注意要点、细节)
May 10 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伪造referer实例代码
2008/09/20 PHP
php SQL之where语句生成器
2009/03/24 PHP
php中文验证码实现示例分享
2014/01/12 PHP
PHP源码分析之变量的存储过程分解
2014/07/03 PHP
this[] 指的是什么内容 讨论
2007/03/24 Javascript
jquery each()源代码
2011/02/14 Javascript
Jquery中children与find之间的区别详细解析
2013/11/29 Javascript
删除javascript中注释语句的正则表达式
2014/06/11 Javascript
告诉你什么是javascript的回调函数
2014/09/04 Javascript
JS交换变量的方法
2015/01/21 Javascript
javascript 实现map集合
2015/04/03 Javascript
JS+CSS实现的拖动分页效果实例
2015/05/11 Javascript
在JavaScript中操作数组之map()方法的使用
2015/06/09 Javascript
javascript检测flash插件是否被禁用的方法
2016/01/14 Javascript
angularjs数组判断是否含有某个元素的实例
2018/02/27 Javascript
JavaScript作用域链实例详解
2019/01/21 Javascript
微信小程序实现自定义底部导航
2020/11/18 Javascript
[52:06]FNATIC vs NIP 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
python写的一个squid访问日志分析的小程序
2014/09/17 Python
Python3多线程爬虫实例讲解代码
2018/01/05 Python
python画图--输出指定像素点的颜色值方法
2019/07/03 Python
python使用协程实现并发操作的方法详解
2019/12/27 Python
python基于opencv检测程序运行效率
2019/12/28 Python
python 监控logcat关键字功能
2020/09/04 Python
实列教程 一款基于jquery和css3的响应式二级导航菜单
2014/11/13 HTML / CSS
户外婚礼策划方案
2014/02/08 职场文书
工程力学专业自荐信范文
2014/03/17 职场文书
党员干部廉洁承诺书
2014/05/28 职场文书
关于安全的标语
2014/06/10 职场文书
物流专业求职信
2014/06/30 职场文书
离婚纠纷代理词
2015/05/23 职场文书
晚会开幕词范文
2016/03/04 职场文书
中国式结婚:司仪主持词(范文)
2019/07/25 职场文书
OpenCV-Python实现轮廓拟合
2021/06/08 Python
Python 数据结构之十大经典排序算法一文通关
2021/10/16 Python
mysql拆分字符串作为查询条件的示例代码
2022/07/07 MySQL