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笔记(1) 关于我们应不应该继续学习python
Oct 24 Python
Python内置函数Type()函数一个有趣的用法
Feb 18 Python
使用Python操作MySQL的一些基本方法
Aug 16 Python
python脚本设置超时机制系统时间的方法
Feb 21 Python
python中如何使用正则表达式的集合字符示例
Oct 09 Python
Django重置migrations文件的方法步骤
May 01 Python
详解Python 中sys.stdin.readline()的用法
Sep 12 Python
Python2与Python3的区别点整理
Dec 12 Python
关于keras.layers.Conv1D的kernel_size参数使用介绍
May 22 Python
python中取绝对值简单方法总结
Jul 24 Python
python3 hdf5文件 遍历代码
May 19 Python
教你使用Python pypinyin库实现汉字转拼音
May 27 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
使用配置类定义Codeigniter全局变量
2014/06/12 PHP
php转换颜色为其反色的方法
2015/04/27 PHP
File文件控件,选中文件(图片,flash,视频)即立即预览显示
2009/04/09 Javascript
Javascript 验证上传图片大小[客户端]
2009/08/01 Javascript
精通Javascript系列之Javascript基础篇
2011/06/07 Javascript
js获取class的所有元素
2013/03/28 Javascript
jQuery基于当前元素进行下一步的遍历
2014/05/20 Javascript
jquery中的常用事件bind、hover、toggle等示例介绍
2014/07/21 Javascript
javascript委托(Delegate)blur和focus用法实例分析
2015/05/26 Javascript
jQuery拖拽排序插件制作拖拽排序效果(附源码下载)
2016/02/23 Javascript
浅析创建javascript对象的方法
2016/05/13 Javascript
jQuery实现图片轮播效果代码
2016/09/27 Javascript
原生js简单实现放大镜特效
2017/05/16 Javascript
详解require.js配置路径的用法和css的引入
2017/09/06 Javascript
了解JavaScript表单操作和表单域
2019/05/27 Javascript
微信小程序实现商城倒计时
2020/11/01 Javascript
JS控制只能输入数字并且最多允许小数点两位
2019/11/24 Javascript
python多线程threading.Lock锁用法实例
2014/11/01 Python
快速了解Python开发中的cookie及简单代码示例
2018/01/17 Python
Python实现简单遗传算法(SGA)
2018/01/29 Python
Go/Python/Erlang编程语言对比分析及示例代码
2018/04/23 Python
对dataframe进行列相加,行相加的实例
2018/06/08 Python
python获取本机所有IP地址的方法
2018/12/26 Python
python实现鸢尾花三种聚类算法(K-means,AGNES,DBScan)
2019/06/27 Python
Python flask框架post接口调用示例
2019/07/03 Python
pyhton中__pycache__文件夹的产生与作用详解
2019/11/24 Python
python利用datetime模块计算程序运行时间问题
2020/02/20 Python
HTML5的hidden属性兼容老浏览器的方法
2014/04/23 HTML / CSS
全球领先美式家具品牌:Ashley爱室丽家居
2017/08/07 全球购物
丝芙兰波兰:Sephora.pl
2018/03/25 全球购物
2014年妇联工作总结
2014/11/21 职场文书
检讨书范文
2015/01/27 职场文书
幼儿园小班教学反思
2016/03/03 职场文书
大学生各类奖学金申请书
2019/06/24 职场文书
2019行政前台转正申请书范文3篇
2019/08/15 职场文书
linux目录管理方法介绍
2022/06/01 Servers