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的装饰器解决Bottle框架中用户验证问题
Apr 24 Python
python执行子进程实现进程间通信的方法
Jun 02 Python
Windows下的Jupyter Notebook 安装与自定义启动(图文详解)
Feb 21 Python
django认证系统 Authentication使用详解
Jul 22 Python
python3.6编写的单元测试示例
Aug 17 Python
python 单线程和异步协程工作方式解析
Sep 28 Python
Django将默认的SQLite更换为MySQL的实现
Nov 18 Python
使用Python画出小人发射爱心的代码
Nov 23 Python
Python request使用方法及问题总结
Apr 26 Python
详解如何修改python中字典的键和值
Sep 29 Python
pyqt5实现井字棋的示例代码
Dec 07 Python
python如何正确使用yield
May 21 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
通过ODBC连接的SQL SERVER实例
2006/10/09 PHP
CodeIgniter框架中_remap()使用方法2例
2014/03/10 PHP
PHP实现支持SSL连接的SMTP邮件发送类
2015/03/05 PHP
WordPress开发中用于标题显示的相关函数使用解析
2016/01/07 PHP
浅谈PHP中new self()和new static()的区别
2017/08/11 PHP
Laravel-添加后台模板AdminLte的实现方法
2019/10/08 PHP
PHP设计模式(一)工厂模式Factory实例详解【创建型】
2020/05/02 PHP
javascript中的变量是传值还是传址的?
2010/04/19 Javascript
javascript模拟select,jselect的方法实现
2012/11/08 Javascript
关于innerHTML后丢失动态绑定的EVENT问题解决方法
2013/05/19 Javascript
js模仿windows桌面图标排列算法具体实现(附图)
2013/06/16 Javascript
jquery中prop()方法和attr()方法的区别浅析
2013/09/06 Javascript
点击按钮或链接不跳转只刷新页面的脚本整理
2013/10/22 Javascript
jQuery学习笔记之toArray()
2014/06/09 Javascript
完美兼容IE,chrome,ff的设为首页、加入收藏及保存到桌面js代码
2014/12/17 Javascript
JavaScript中setMonth()方法的使用详解
2015/06/11 Javascript
jqGrid表格应用之新增与删除数据附源码下载
2015/12/02 Javascript
jQuery控制li上下循环滚动插件用法实例(附demo源码下载)
2016/05/28 Javascript
jQuery使用正则表达式限制文本框只能输入数字
2016/06/18 Javascript
浅谈JavaScript中变量和函数声明的提升
2016/08/09 Javascript
JS实现京东首页之页面顶部、Logo和搜索框功能
2017/01/12 Javascript
原生JS仿QQ阅读点击展开、收起效果
2017/03/08 Javascript
详解基于Bootstrap+angular的一个豆瓣电影app
2017/06/26 Javascript
javascript显示动态时间的方法汇总
2018/07/06 Javascript
ionic使用angularjs表单验证(模板验证)
2018/12/12 Javascript
详解将微信小程序接口Promise化并使用async函数
2019/08/05 Javascript
微信小程序 自定义复选框实现代码实例
2019/09/04 Javascript
JavaScript Dom 绑定事件操作实例详解
2019/10/02 Javascript
[28:48]《真视界》- 2017年国际邀请赛
2017/09/27 DOTA
[51:17]VGJ.T vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
PyQt5响应回车事件的方法
2019/06/25 Python
意大利在线眼镜精品店:Ottica Lipari
2019/11/11 全球购物
PHP面试题附答案
2015/11/28 面试题
HTML中table表格拆分合并(colspan、rowspan)
2021/04/07 HTML / CSS
Python基础之条件语句详解
2021/06/16 Python
Golang 入门 之url 包
2022/05/04 Golang