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 相关文章推荐
21行Python代码实现拼写检查器
Jan 25 Python
Python脚本处理空格的方法
Aug 08 Python
Python面向对象之类的定义与继承用法示例
Jan 14 Python
Python的高阶函数用法实例分析
Apr 11 Python
Python中turtle库的使用实例
Sep 09 Python
如何基于python实现脚本加密
Dec 28 Python
python爬虫请求头设置代码
Jul 28 Python
Python爬虫之Spider类用法简单介绍
Aug 04 Python
Django前后端分离csrf token获取方式
Dec 25 Python
Opencv+Python识别PCB板图片的步骤
Jan 07 Python
pytorch--之halfTensor的使用详解
May 24 Python
Python如何使用循环结构和分支结构
Apr 13 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
dedecms模版制作使用方法
2007/04/03 PHP
中英文字符串翻转函数
2008/12/09 PHP
PHP中include/require/include_once/require_once使用心得
2016/08/28 PHP
PHP中实现中文字串截取无乱码的解决方法
2018/05/29 PHP
JS将光标聚焦在文本最后的实现代码
2014/03/28 Javascript
JsRender for object语法简介
2014/10/31 Javascript
JS中的hasOwnProperty()、propertyIsEnumerable()和isPrototypeOf()
2016/08/11 Javascript
jquery删除table当前行的实例代码
2016/10/07 Javascript
微信小程序之多文件下载的简单封装示例
2018/01/29 Javascript
简单分析js中的this的原理
2019/08/31 Javascript
JS中比较两个Object数组是否相等方法实例
2019/11/11 Javascript
[48:53]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS VG第一场
2014/05/26 DOTA
[46:00]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#4EG VS Fnatic第一局
2016/03/03 DOTA
[01:34]DOTA2 7.22版本新增神杖效果一览(敏捷英雄篇)
2019/05/28 DOTA
Python Excel处理库openpyxl使用详解
2019/05/09 Python
python 实现多线程下载视频的代码
2019/11/15 Python
Python字典生成式、集合生成式、生成器用法实例分析
2020/01/07 Python
pytorch 修改预训练model实例
2020/01/18 Python
python实现信号时域统计特征提取代码
2020/02/26 Python
详解python 内存优化
2020/08/17 Python
python中字符串的编码与解码详析
2020/12/03 Python
如何用Matlab和Python读取Netcdf文件
2021/02/19 Python
HTML5 Canvas自定义圆角矩形与虚线示例代码
2013/08/02 HTML / CSS
香港迪士尼乐园酒店预订:Hong Kong Disneyland Hotels
2017/05/02 全球购物
软件测试有哪些?什么是配置项?
2012/02/12 面试题
高中毕业生的个人自我评价
2014/02/21 职场文书
大三学生做职业规划:给未来找个方向
2014/02/24 职场文书
优秀的2014年两会精神解读
2014/03/17 职场文书
竞聘上岗演讲稿
2014/05/16 职场文书
我的中国梦演讲稿500字
2014/08/19 职场文书
局机关干部群众路线个人对照检查材料思想汇报
2014/10/05 职场文书
公安纪律作风整顿剖析材料
2014/10/10 职场文书
教师学期末个人总结
2015/02/13 职场文书
2016自主招生教师推荐信范文
2015/03/23 职场文书
中学感恩教育活动总结
2015/05/05 职场文书
如何书写民事调解协议书?
2019/06/25 职场文书