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 相关文章推荐
简单的通用表达式求10乘阶示例
Mar 03 Python
Python中使用Boolean操作符做真值测试实例
Jan 30 Python
python3设计模式之简单工厂模式
Oct 17 Python
Python建立Map写Excel表实例解析
Jan 17 Python
Numpy中的mask的使用
Jul 21 Python
python针对mysql数据库的连接、查询、更新、删除操作示例
Sep 11 Python
Python lxml模块的基本使用方法分析
Dec 21 Python
Python基于百度AI实现OCR文字识别
Apr 02 Python
Keras—embedding嵌入层的用法详解
Jun 10 Python
PyTorch中model.zero_grad()和optimizer.zero_grad()用法
Jun 24 Python
详解python中GPU版本的opencv常用方法介绍
Jul 24 Python
scrapy头部修改的方法详解
Dec 06 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函数代码
2010/04/22 PHP
PHP foreach循环使用详解与实例代码
2010/05/08 PHP
php判断正常访问和外部访问的示例
2014/02/10 PHP
thinkphp配置连接数据库技巧
2014/12/02 PHP
php中get_meta_tags()、CURL与user-agent用法分析
2014/12/16 PHP
PHP实现根据银行卡号判断银行
2015/04/29 PHP
php批量删除超链接的实现方法
2015/10/19 PHP
PHP编程之设置apache虚拟目录
2016/07/08 PHP
javascript语言结构小记(一)
2011/09/10 Javascript
JSONP之我见
2015/03/24 Javascript
JQuery中ajax方法访问web服务实例
2015/07/18 Javascript
js实现跨域的4种实用方法原理分析
2015/10/29 Javascript
JavaScript通过HTML的class来获取HTML元素的方法总结
2016/05/24 Javascript
JS中位置与大小的获取方法
2016/11/22 Javascript
jQuery实现最简单实用的分秒倒计时
2017/02/05 Javascript
详解Vue2.0配置mint-ui踩过的那些坑
2018/04/23 Javascript
微信小程序 wx:for 与 wx:for-items 与 wx:key的正确用法
2020/05/19 Javascript
JS出现404错误原理及解决方案
2020/07/01 Javascript
基于Vue全局组件与局部组件的区别说明
2020/08/11 Javascript
javascript实现贪吃蛇游戏(娱乐版)
2020/08/17 Javascript
python实现通过shelve修改对象实例
2014/09/26 Python
python3.5使用tkinter制作记事本
2016/06/20 Python
树莓派动作捕捉抓拍存储图像脚本
2019/06/22 Python
Windows系统Python直接调用C++ DLL的方法
2019/08/01 Python
Python实现从N个数中找到最大的K个数
2020/04/02 Python
python实现网页录音效果
2020/10/26 Python
pandas将list数据拆分成行或列的实现
2020/12/13 Python
加拿大领先的牛仔零售商:Bluenotes
2018/01/22 全球购物
大专生毕业的自我评价
2014/02/06 职场文书
投资入股合作协议书
2014/10/28 职场文书
母亲节寄语大全
2015/02/27 职场文书
公司安全管理制度范本
2015/08/05 职场文书
公司食堂管理制度
2015/08/05 职场文书
食品安全主题班会
2015/08/13 职场文书
MySQL 8.0 Online DDL快速加列的相关总结
2021/06/02 MySQL
ubuntu20.04虚拟机无法上网的问题及解决
2022/12/24 Servers