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 常用的安装Module方式汇总
May 06 Python
python+mongodb数据抓取详细介绍
Oct 25 Python
python自动裁剪图像代码分享
Nov 25 Python
Python with语句上下文管理器两种实现方法分析
Feb 09 Python
Python 3.7新功能之dataclass装饰器详解
Apr 21 Python
django 中QuerySet特性功能详解
Jul 25 Python
python3-flask-3将信息写入日志的实操方法
Nov 12 Python
打包PyQt5应用时的注意事项
Feb 14 Python
如何在django中实现分页功能
Apr 22 Python
python使用Windows的wmic命令监控文件运行状况,如有异常发送邮件报警
Jan 30 Python
python上下文管理器异常问题解决方法
Feb 07 Python
Pyqt5将多个类组合在一个界面显示的完整示例
Sep 04 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 中的str_replace 函数总结
2007/04/27 PHP
php ucwords() 函数将字符串中每个单词的首字符转换为大写(实现代码)
2016/05/12 PHP
PHP+MySQL存储数据常见中文乱码问题小结
2016/06/13 PHP
php mysql 封装类实例代码
2016/09/18 PHP
JavaScript入门教程(10) 认识其他对象
2009/01/31 Javascript
node.js中的path.resolve方法使用说明
2014/12/08 Javascript
jQuery+css3动画属性制作猎豹浏览器宽屏banner焦点图
2015/03/16 Javascript
微信小程序 MINA文件结构
2016/10/17 Javascript
简单实现JS倒计时效果
2016/12/23 Javascript
Vue.js父与子组件之间传参示例
2017/02/28 Javascript
JSON与JS对象的区别与对比
2017/03/01 Javascript
JavaScript实现获取用户单击body中所有A标签内容的方法
2017/06/05 Javascript
Node.js+Express+MySql实现用户登录注册功能
2017/07/10 Javascript
JS跳转手机站url的若干注意事项
2017/10/18 Javascript
vue项目中引入noVNC远程桌面的方法
2018/03/05 Javascript
详解element-ui中表单验证的三种方式
2019/09/18 Javascript
vue组件 keep-alive 和 transition 使用详解
2019/10/11 Javascript
Vue基础配置讲解
2019/11/29 Javascript
JS数据类型STRING使用实例解析
2019/12/18 Javascript
JavaScript this关键字指向常用情况解析
2020/09/02 Javascript
Python、 Pycharm、Django安装详细教程(图文)
2019/04/12 Python
django url到views参数传递的实例
2019/07/19 Python
Python reversed函数及使用方法解析
2020/03/17 Python
Python压缩模块zipfile实现原理及用法解析
2020/08/14 Python
python实现定时发送邮件
2020/12/23 Python
HTML5+CSS3 诱人的实例:3D立方体旋转动画实例
2016/12/30 HTML / CSS
Ray-Ban雷朋美国官网:全球领先的太阳眼镜品牌
2016/07/20 全球购物
Subside Sports德国:足球球衣和球迷商品
2019/06/08 全球购物
网络教育毕业生自我鉴定
2013/10/10 职场文书
财务分析个人的自荐书范文
2013/11/24 职场文书
机械加工与数控专业自荐书
2014/06/04 职场文书
支行行长竞聘报告
2014/11/06 职场文书
北京故宫的导游词
2015/01/31 职场文书
六五普法先进个人主要事迹材料
2015/11/03 职场文书
my.ini优化mysql数据库性能的十个参数(推荐)
2021/05/26 MySQL
Android Studio实现简易进制转换计算器
2022/05/20 Java/Android