Python自动化测试框架——数据驱动(从文件中读取)
学过编程的伙伴们都知道,数据不仅可以从代码中读取,还可以从文件中读取。
今天小编就简要的介绍一下从文件中读取数据,并应用到自动化测试中方法。
先来展示下接下来将要用到的文件在项目中的结构
- 从txt文件
首先准备一个txt文件,这个文件中存放一些关键字,中英文数字什么的随便,小编要从文件中读取这些数据并且用百度搜索这些数据
【data.txt】
- selenium
- 追光者
- 5211314
- www.iqiyi,com
- 琅琊榜之风气长林
使用百度搜索引擎自动搜索以上内容
- #以utf-8的编码、只读的形式打开文件
- data=open(".\data\search_key.txt","r",encoding="utf-8")
- #读取每一行的数据内容
- values=data.readlines()
- #读取完成后关闭文件
- data.close()
- #遍历读取到的内容,将每次遍历的结果使用百度搜索
- for value in values:
- driver = webdriver.Firefox()
- driver.get("https://www.baidu.com")
- driver.find_element_by_id("kw").send_keys(value)
- driver.find_element_by_id("su").click()
- time.sleep(3)
- driver.quit()
- print(value)
上述为最基础的内容,我们也可以在一行中保存多个关键字,使用特定的符号分割开来
【more_key.txt】
- 张三,zhangsan,123
- 李四,lisi,qwe
- 王五,wangwu,1e44te
- 赵六.zhaoliu,22332
- 白七七,baiqiqi,%^&*(%^&*
接下来小编只介绍如何读取这个文件的内容,至于如何在自动化测试中使用这种方法,请各位小伙伴参考上一份代码自行理解
- data=open(".\data\more_key.txt","r",encoding="utf-8")
- values=data.readlines()
- data.close()
- for value in values:
- #文件中每一个关键字之间使用“,”隔开,因此在代码中也使用“,”来区分不同的关键字
- cn_name=value.split(",")[0]
- print(cn_name)
- en_name=value.split(",")[1]
- print(en_name)
- other=value.split(",")[2]
- print(other)
运行结果如下:
- 从csv文件
准备csv文件,可以使用Excel的“新建”“另存为”功能将文件保存为csv文件,但不要使用直接更改excel后缀名的方式,这种方法创建出来的不是真正的csv文件
同样的,小编只介绍读取csv文件的方法
- #导入csv包
- import csv
- #with open()打开文件,既执行了打开文件,同时在方法结束后自动关闭文件,免去了我们忘记关闭文件的错误
- with open(".\data\csv_data.csv","r") as f:
- #读取csv文件
- values=csv.reader(f)
- print("打印产品信息、测试信息")
- for value in values:
- print(value[0], value[3])
执行结果如下
- 从xml文件
准备xml文件【myxml.xml】
- <?xml version="1.0" encoding="utf-8"?>
- <country name="China" value="">
- <city name="北京">
- <town>朝阳 </town>
- <town>东城 </town>
- <town>密云</town>
- </city>
- <city name="河北">
- <town>石家庄 </town>
- <town>保定</town>
- <town>雄安</town>
- </city>
- <city name="陕西">
- <town>西安</town>
- <town>咸阳</town>
- </city>
- <city name="山西" weather="wind">
- <town name="太原">
- 太原
- <love>煤</love>
- </town>
- <town>大同</town>
- </city>
- <city name="unknown">UnKnown</city>
- </country>
1、打开xml文件
- #导入xml的包
- import xml.dom.minidom
- #打开xml文件
- xml_file=xml.dom.minidom.parse('.\data\myxml.xml')
- xml.dom.minidom用来处理xml文件,parse可以打开xml文件
2、获取根元素标签信息
每个<xx></xx>构成一个节点,每个节点都有自己的nodeName(节点名称),nodeValue(节点值,只对文本文档有效),nodeType(节点类型)
用documentElemet将xml_file对象的文档信息传递到root中,通过root来调取结点信息
- #获得文档元素对象
- root=xml_file.documentElement
- print(root.nodeName)
- print(root.nodeValue)
- print(root.nodeType)
执行结果如下:
3、获得任意标签名
此处我们需要使用一个方法:getElementByTagName("tageName_xxx")
这个方法会扫描整个xml文件,将所有标签名为tageName_xxx的节点放到一个数组中,通过索引号进行调取。
citys[4]表示一组city的标签中的第5个,序号从0开始,注意数组的越界问题
- #获取任意标签名
- root=xml_file.documentElement
- citys=root.getElementsByTagName("city")
- print(citys[4].tagName)
- tags=root.getElementsByTagName("town")
- print(tags[2].tagName)
- tags=root.getElementsByTagName("love")
- print(tags[0].tagName)
4、获得标签的属性值
获取city标签的属性值name.weather
- #获取标签的属性值
- root=xml_file.documentElement
- #获得一组city的标签
- citys=root.getElementsByTagName("city")
- #获取第4个城市的name、weather属性值
- city_name=citys[3].getAttribute("name")
- city_weather=citys[3].getAttribute("weather")
- print(city_name,city_weather)
运行结果如下:
5、获得标签对之间的数据
- #获取第10个towm的数据
- towns=root.getElementsByTagName("town")
- towm_name=towns[9].firstChild.data
- print(towm_name)
firstChild选项返回的是该节点的第一个子结点,data表示该子节点的数据
运行结果如下:
经整理之后的源代码奉上,敬请指正
- #导入xml的包
- import xml.dom.minidom
- #打开xml文件
- xml_file=xml.dom.minidom.parse('.\data\myxml.xml')
- #获得文档元素对象
- print("以下为文档根元素的信息")
- root=xml_file.documentElement
- print(root.nodeName)
- print(root.nodeType)
- print("获取任意标签名")
- tags=root.getElementsByTagName("city")
- print(tags[4].tagName)
- tags=root.getElementsByTagName("town")
- print(tags[2].tagName)
- tags=root.getElementsByTagName("love")
- print(tags[0].tagName)
- print("获取标签的属性值")
- #获得一组city的标签
- citys=root.getElementsByTagName("city")
- #获取第4个城市的name、weather属性值
- city_name=citys[3].getAttribute("name")
- city_weather=citys[3].getAttribute("weather")
- print(city_name,city_weather)
- print("获取第标签之间的数据")
- towns=root.getElementsByTagName("town")
- towm_name=towns[9].firstChild.data
- print(towm_name)
XML_data
Python自动化测试框架——数据驱动(从文件中读取)的更多相关文章
- Python自动化测试框架——数据驱动(从代码中读取)
今天小编要介绍的是数据驱动最简单和最常用的一种方法,由于只是介绍方法,代码操作后的美观程度略有缺陷,介意者可以自行改动 还是以163邮箱登录为例: 设计一个存放数据的类,这个类的参数是我们需要修改的数 ...
- Python学习笔记之从文件中读取数据
10-1 Python 学习笔记:在文本编辑器中新建一个文件,写几句话来总结一下你至此学到的Python 知识,其中每一行都以“In Python you can”打头.将这个文件命名为learnin ...
- python webdriver 测试框架-数据驱动json文件驱动的方式
数据驱动json文件的方式 test_data_list.json: [ "邓肯||蒂姆", "乔丹||迈克尔", "库里||斯蒂芬", & ...
- 【Python】从文件中读取数据
从文件中读取数据 1.1 读取整个文件 要读取文件,需要一个包含几行文本的文件(文件PI_DESC.txt与file_reader.py在同一目录下) PI_DESC.txt 3.1415926535 ...
- Python从文件中读取字符串,用正则表达式匹配中文字符的问题
2013-07-27 21:01:37| 在Windows下,用Python从.txt文件中读取字符串,并用正则表达式匹配中文,在网上看了方法,用的时候发现中文没有被匹配. ...
- 用Python的pandas框架操作Excel文件中的数据教程
用Python的pandas框架操作Excel文件中的数据教程 本文的目的,是向您展示如何使用pandas 来执行一些常见的Excel任务.有些例子比较琐碎,但我觉得展示这些简单的东西与那些你可以在其 ...
- 【转】推荐4个不错的Python自动化测试框架
之前,开发团队接手一个项目并开始开发时,除了项目模块的实际开发之外,他们不得不为这个项目构建一个自动化测试框架.一个测试框架应该具有最佳的测试用例.假设(assumptions).脚本和技术来运行每一 ...
- spring 框架的xml文件如何读取properties文件数据
spring 框架的xml文件如何读取properties文件数据 第一步:在spring配置文件中 注意:value可以多配置几个properties文件 <bean id="pro ...
- Python3实现从文件中读取指定行的方法
from:http://www.jb51.net/article/66580.htm 这篇文章主要介绍了Python3实现从文件中读取指定行的方法,涉及Python中linecache模块操作文件的使 ...
随机推荐
- css文本之蛇
文本之蛇 css把文本当做一行来处理,把他们放在一个看不见的盒子里面.盒子遇到容器的外边界会折行.所有的文本属性都应用于这个盒子,而不是包含文本的容器. 最有用的8个文本属性 文本缩进(text-in ...
- Spring security + oauth2.0 + redis + mybatis plus 搭建微服务
上个星期一个朋友请求帮忙,让我搭建一个分布式授权中心的微服务,之前我也没搭建过,在网上撸了几天前辈们写的技术博客,搞出个模型,分享给大家: 前辈们博客地址: OAuth2.0 原理:https://b ...
- Centos 5.11 升级 Openssl
由于Openssl版本较低,故此升级版本来解决一些小问题. 1:查看openssl版本: [root@server-008 ~]# openssl versionOpenSSL 0.9.8e-fips ...
- PAT甲级——1118 Birds in Forest (并查集)
此文章 同步发布在CSDN:https://blog.csdn.net/weixin_44385565/article/details/89819984 1118 Birds in Forest ...
- 测试 | 代码覆盖测试工具 | Eclemma
安装: 打开eclipse,点击Help菜单下的Install New Software 在弹出的对话框中,点击Add 输入Name,如EclEmma 输入Location: http://updat ...
- 使用Hexo 搭建自己的博客
使用Hexo 搭建自己的博客 最近一直都想着如何去搭建属于自己的博客,有空的时候就写写文章什么的. 本人对该博客系统的要求是: 博文的编写要采用现在流行的MarkDown来进行编写. 本人还不想去注册 ...
- 转 11g Grid Control: Overview of the EMCTL Options Available for Managing the Agent
1.概念: The Enterprise Manager DBConsole consists of the following components: - A Standalone OC4J Man ...
- Android 流量测试方法
流量测试怎么测?下面总结了几个方法: 一.通过pid获取流量 > 1.获取应用的pid adb shell ps | grep packagename 2.通过pid获取该进程的流量信息 adb ...
- hdu4832Chess(dp)
链接 这题第一想法是矩阵,不过范围太大了,然后就没有思路了.. 之后看到群里的解法,行和列可以分着走,两者是互不影响的,这样就把二维转换成了一维,直接dp求出就可以了. 然后再组合相乘一下. #inc ...
- jQuery测试
1.在div元素中,包含了一个<span>元素,通过has选择器获取<div>元素中的<span>元素的语法是? 提示使用has() $("div&quo ...