Python自动化之数据驱动让你的脚本简洁10倍【推荐】


Posted in Python onJune 04, 2019

Python自动化之数据驱动让你的脚本简洁10倍【推荐】

前言

数据驱动是一种思想,让数据和代码进行分离,比如爬虫时,我们需要分页爬取数据时,我们往往把页数 page 参数化,放在 for 循环 range 中,假如没有 range 这个自带可以生产数字序列的方法可以用,我们是不是得手动逐个添加?

Python自动化之数据驱动让你的脚本简洁10倍【推荐】

现实场景中就存在大量这样的例子,比如我之前写的爬取上海各地区房租情况的时候,对地区进行遍历的时候,为了偷懒,我直接把这些地区的拼音全称放在了列表里,组合成各地区房源的链接。最后文章写完了,有读者反馈,少了徐汇区的统计数据。这种小数量的数据都出现了纰漏,可想而知,对于大量的数据,怎么保证数据的完整和准确性?我们需要把两者分离,数据专门储存在特定文件(比如 Excel 文件)。

Python自动化之数据驱动让你的脚本简洁10倍【推荐】

举一个小栗子:登录流程,在测试的时候,除了测试登录成功的场景,我们往往需要测到各种登录异常的场景。

写几条很常见的案例如下:

Python自动化之数据驱动让你的脚本简洁10倍【推荐】

比如上面写了 5 条案例,数据和脚本不做分离的话,我们写自动化测试脚本需要写 5 条。

Python自动化之数据驱动让你的脚本简洁10倍【推荐】

5 条案例中,脚本都是基本一样的,只是输入框输入的数据不一样罢了。

Python自动化之数据驱动让你的脚本简洁10倍【推荐】

数据分离

我们完全可以把数据存储在 Excel 表中,我们通过循环读取 Excel 表中的数据来实现一条脚本执行多条数据。

我们先封装一个操作 Excel 文件的类,需要先安装导入包 openpyxl。

我们用这个库可以做一下功能:读取表格数据、保存执行结果。

我们先在类下写一个打开 Excel 文件的初始化方法,构造方法的作用是,当类被实例化后,会立即调用构造方法。

Python自动化之数据驱动让你的脚本简洁10倍【推荐】

读取表格数据

然后我们写一个读取 Excel 数据的方法,读取数据后返回数据列表,以便之后调用获取对应的数据,因为第 1 列数据是序号,所以直接返回第 2 列之后的数据。

Python自动化之数据驱动让你的脚本简洁10倍【推荐】

保存执行结果

实际结果和预期结果对比后,我们需要标记执行结果是 pass 或者 fail,我们需要保存结果,保存到对应的单元格中。

Python自动化之数据驱动让你的脚本简洁10倍【推荐】

我们看看我们的案例格式:

Python自动化之数据驱动让你的脚本简洁10倍【推荐】

这样的话,我们脚本就不用写 5 条了,调用 Excel 文件的数据,循环执行案例即可,不仅逻辑清晰,还方便了后期的维护。

Python自动化之数据驱动让你的脚本简洁10倍【推荐】

这样,测试数据和脚本分离后,不同的测试数据用不同的 Excel 文件保存即可。

吃饭时或者下班时执行下测试脚本,吃完饭后或者第二天上班时,查看下 Excel 里的执行结果,有 fail 再手动看看能否复现,是不是很高效?

总结

以上所述是小编给大家介绍的Python自动化之数据驱动让你的脚本简洁10倍,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
python不带重复的全排列代码
Aug 13 Python
Python中处理字符串之endswith()方法的使用简介
May 18 Python
举例讲解Python面相对象编程中对象的属性与类的方法
Jan 19 Python
python 爬取微信文章
Jan 30 Python
Python返回数组/List长度的实例
Jun 23 Python
Python解决线性代数问题之矩阵的初等变换方法
Dec 12 Python
三步解决python PermissionError: [WinError 5]拒绝访问的情况
Apr 22 Python
Python实现手绘图效果实例分享
Jul 22 Python
Python中的特殊方法以及应用详解
Sep 20 Python
scrapy实践之翻页爬取的实现
Jan 05 Python
python opencv常用图形绘制方法(线段、矩形、圆形、椭圆、文本)
Apr 12 Python
Python进度条的使用
May 17 Python
pandas DataFrame索引行列的实现
Jun 04 #Python
深入浅析Python中的迭代器
Jun 04 #Python
Python学习笔记之读取文件、OS模块、异常处理、with as语法示例
Jun 04 #Python
Python利用sqlacodegen自动生成ORM实体类示例
Jun 04 #Python
Python批量生成幻影坦克图片实例代码
Jun 04 #Python
python和mysql交互操作实例详解【基于pymysql库】
Jun 04 #Python
Python获取基金网站网页内容、使用BeautifulSoup库分析html操作示例
Jun 04 #Python
You might like
php5新改动之短标记启用方法
2008/09/11 PHP
php 静态变量的初始化
2009/11/15 PHP
PHP GD 图像处理组件的常用函数总结
2010/04/28 PHP
PHP删除特定数组内容并且重建数组索引的方法.
2011/03/25 PHP
javascript类继承机制的原理分析
2009/09/12 Javascript
在JavaScript中获取请求的URL参数
2010/12/22 Javascript
JS 屏蔽按键效果与改变按键效果的示例代码
2013/12/24 Javascript
前端学习笔记style,currentStyle,getComputedStyle的用法与区别
2016/05/28 Javascript
JavaScript基于replace+正则实现ES6的字符串模版功能
2017/04/25 Javascript
jQuery之动画ajax事件(实例讲解)
2017/07/18 jQuery
JavaScript闭包的简单应用
2017/09/01 Javascript
nodejs中Express与Koa2对比分析
2018/02/06 NodeJs
webpack配置导致字体图标无法显示的解决方法
2018/03/06 Javascript
Angular5集成eventbus的示例代码
2018/07/19 Javascript
vue 监听某个div垂直滚动条下拉到底部的方法
2018/09/15 Javascript
使用angularjs.foreach时return的问题解决
2018/09/30 Javascript
JavaScript实现邮箱后缀提示功能的示例代码
2018/12/13 Javascript
jquery实现掷骰子小游戏
2019/10/24 jQuery
js实现一款简单踩白块小游戏(曾经很火)
2019/12/02 Javascript
JS运算符简单用法示例
2020/01/19 Javascript
JavaScript原型继承和原型链原理详解
2020/02/04 Javascript
typescript编写微信小程序创建项目的方法
2021/01/29 Javascript
[19:26]TNC vs EG (BO3)
2018/06/07 DOTA
[34:47]完美世界DOTA2联赛PWL S2 Magma vs LBZS 第一场 11.18
2020/11/18 DOTA
python封装对象实现时间效果
2020/04/23 Python
python备份文件以及mysql数据库的脚本代码
2013/06/10 Python
Python实现的批量下载RFC文档
2015/03/10 Python
教你用Python写安卓游戏外挂
2018/01/11 Python
python 实现波浪滤镜特效
2020/12/02 Python
Hotels.com越南:酒店预订
2019/10/29 全球购物
财务助理岗位职责
2013/11/10 职场文书
个人委托书范本汇总
2014/10/01 职场文书
高中生综合素质评价范文
2015/08/18 职场文书
2016个人先进事迹材料范文
2016/03/01 职场文书
MySQL 5.7常见数据类型
2021/07/15 MySQL
未发现nvidia显卡怎么办?Win11系统中未检测到nvidia显卡解决教程
2022/04/08 数码科技