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 相关文章推荐
详解Django缓存处理中Vary头部的使用
Jul 24 Python
Flask框架中密码的加盐哈希加密和验证功能的用法详解
Jun 07 Python
详解python的webrtc库实现语音端点检测
May 31 Python
pandas将DataFrame的列变成行索引的方法
Apr 10 Python
python 查找文件名包含指定字符串的方法
Jun 05 Python
Python3实现的Mysql数据库操作封装类
Jun 06 Python
查看python下OpenCV版本的方法
Aug 03 Python
一行代码让 Python 的运行速度提高100倍
Oct 08 Python
Python中字符串String的基本内置函数与过滤字符模块函数的基本用法
May 27 Python
Python 3.8中实现functools.cached_property功能
May 29 Python
python+tkinter实现学生管理系统
Aug 20 Python
python 实现线程之间的通信示例
Feb 14 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
全新的PDO数据库操作类php版(仅适用Mysql)
2012/07/22 PHP
浅析PHP程序防止ddos,dns,集群服务器攻击的解决办法
2013/06/18 PHP
对PHP语言认识上需要避免的10大误区
2014/06/12 PHP
Laravel 5.3 学习笔记之 错误&amp;日志
2016/08/28 PHP
URL地址中的#符号使用说明
2011/02/12 Javascript
JS 获取select(多选下拉)中所选值的示例代码
2013/08/02 Javascript
用javascript判断IE版本号简单实用且向后兼容
2013/09/11 Javascript
鼠标悬浮停留三秒后自动显示大图js代码
2014/09/09 Javascript
jQuery设置和移除文本框默认值的方法
2015/03/09 Javascript
JS实现仿雅虎首页快捷登录入口及导航模块效果
2015/09/19 Javascript
jquery简单倒计时实现方法
2015/12/18 Javascript
BootStrap Fileinput上传插件使用实例代码
2017/07/28 Javascript
ComboBox(下拉列表框)通过url加载调用远程数据的方法
2017/08/06 Javascript
JS使用队列对数组排列,基数排序算法示例
2019/03/02 Javascript
JavaScript正则表达式验证登录实例
2020/03/18 Javascript
浅谈Vue3.0新版API之composition-api入坑指南
2020/04/30 Javascript
JavaScript中Object、map、weakmap的区别分析
2020/12/15 Javascript
python执行子进程实现进程间通信的方法
2015/06/02 Python
Python3+Requests+Excel完整接口自动化测试框架的实现
2019/10/11 Python
使用python实现数组、链表、队列、栈的方法
2019/12/20 Python
对python中 math模块下 atan 和 atan2的区别详解
2020/01/17 Python
Tensorflow之梯度裁剪的实现示例
2020/03/08 Python
使用jupyter notebook直接打开.md格式的文件
2020/04/10 Python
详解使用scrapy进行模拟登陆三种方式
2021/02/21 Python
利用HTML5画出一个坦克的形状具体实现代码
2013/06/20 HTML / CSS
Under Armour安德玛英国官网:美国高端运动科技品牌
2018/09/17 全球购物
广州迈达威.net面试题目
2012/03/10 面试题
现金会计岗位职责
2013/12/05 职场文书
普通党员对照检查材料
2014/08/28 职场文书
委托书范本
2014/09/13 职场文书
党的群众路线对照检查材料思想汇报
2014/09/25 职场文书
2015年资料员工作总结
2015/04/25 职场文书
幼儿园家长反馈意见
2015/06/03 职场文书
离婚起诉书范文2016
2015/11/26 职场文书
MySQL REVOKE实现删除用户权限
2021/06/18 MySQL
搭建Yolov5服务器
2022/04/30 Servers