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版
Dec 07 Python
深入Python解释器理解Python中的字节码
Apr 01 Python
使用Python的Tornado框架实现一个Web端图书展示页面
Jul 11 Python
python 显示数组全部元素的方法
Apr 19 Python
Python import与from import使用及区别介绍
Sep 06 Python
python清空命令行方式
Jan 13 Python
Pytorch中.new()的作用详解
Feb 18 Python
使用python 计算百分位数实现数据分箱代码
Mar 03 Python
python实现坦克大战
Apr 24 Python
Python中的Cookie模块如何使用
Jun 04 Python
通过代码实例了解Python sys模块
Sep 14 Python
Python爬虫实战案例之爬取喜马拉雅音频数据详解
Dec 07 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 加密/解密函数 dencrypt(动态密文,带压缩功能,支持中文)
2009/01/30 PHP
php ss7.5的数据调用 (笔记)
2010/03/08 PHP
PHP与MYSQL中UTF8编码的中文排序实例
2014/10/21 PHP
PHP获取一年有几周以及每周开始日期和结束日期
2015/08/06 PHP
seajs1.3.0源码解析之module依赖有序加载
2012/11/07 Javascript
datagrid框架的删除添加与修改
2013/04/08 Javascript
关于img的href和src取变量及赋值的方法
2014/04/28 Javascript
jQuery如何将选中的对象转化为原始的DOM对象
2014/06/09 Javascript
jQuery插件jquery-barcode实现条码打印的方法
2015/11/25 Javascript
javascript中的 object 和 function小结
2016/08/14 Javascript
基于Bootstrap仿淘宝分页控件实现代码
2016/11/07 Javascript
jQuery实现动态给table赋值的方法示例
2017/07/04 jQuery
iview同时验证多个表单问题总结
2018/09/29 Javascript
nodejs遍历文件夹下并操作HTML/CSS/JS/PNG/JPG的方法
2018/11/01 NodeJs
Vue.js组件高级特性实例详解
2018/12/24 Javascript
Three.js中矩阵和向量的使用教程
2019/03/19 Javascript
浅谈vue中$event理解和框架中在包含默认值外传参
2020/08/07 Javascript
Python3基础之函数用法
2014/08/13 Python
python在windows命令行下输出彩色文字的方法
2015/03/19 Python
pymssql数据库操作MSSQL2005实例分析
2015/05/25 Python
Python常见异常分类与处理方法
2017/06/04 Python
python PyTorch参数初始化和Finetune
2018/02/11 Python
使用Python通过win32 COM打开Excel并添加Sheet的方法
2018/05/02 Python
python实现动态数组的示例代码
2019/07/15 Python
Python基于DB-API操作MySQL数据库过程解析
2020/04/23 Python
Python使用jupyter notebook查看ipynb文件过程解析
2020/06/02 Python
python字典通过值反查键的实现(简洁写法)
2020/09/30 Python
Python爬虫之Selenium实现窗口截图
2020/12/04 Python
英国品牌男装折扣网站:Brown Bag
2018/03/08 全球购物
英国屋顶用品和材料超市:Roofing Supplies UK
2019/08/24 全球购物
材料工程专业毕业生求职信
2014/03/04 职场文书
婚礼答谢词
2015/01/04 职场文书
python实战之一步一步教你绘制小猪佩奇
2021/04/22 Python
python 爬取哔哩哔哩up主信息和投稿视频
2021/06/07 Python
redis不能访问本机真实ip地址的解决方案
2021/07/07 Redis
使用CSS实现一个搜索引擎的原理解析
2021/09/25 HTML / CSS