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绘制人人网好友关系图示例
Apr 01 Python
小结Python用fork来创建子进程注意事项
Jul 03 Python
简介Django框架中可使用的各类缓存
Jul 23 Python
python subprocess 杀掉全部派生的子进程方法
Jan 16 Python
Python 获得13位unix时间戳的方法
Oct 20 Python
pytorch模型预测结果与ndarray互转方式
Jan 15 Python
基于tensorflow指定GPU运行及GPU资源分配的几种方式小结
Feb 03 Python
Python datetime 格式化 明天,昨天实例
Mar 02 Python
Python dict和defaultdict使用实例解析
Mar 12 Python
基于python tkinter的点名小程序功能的实例代码
Aug 22 Python
python使用yaml 管理selenium元素的示例
Dec 01 Python
python日志通过不同的等级打印不同的颜色(示例代码)
Jan 13 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
php 获取全局变量的代码
2011/04/21 PHP
PHP中对数组的一些常用的增、删、插操作函数总结
2015/11/27 PHP
laravel实现一个上传图片的接口,并建立软链接,访问图片的方法
2019/10/12 PHP
JavaScript 基础知识 被自己遗忘的
2009/10/15 Javascript
Javascript和Java获取各种form表单信息的简单实例
2014/02/14 Javascript
javascript封装 Cookie 应用接口
2015/08/07 Javascript
浅谈javascript中执行环境(作用域)与作用域链
2016/12/08 Javascript
Angularjs单选改为多选的开发过程及问题解析
2017/02/17 Javascript
canvas 实现中国象棋
2017/02/17 Javascript
Vue 2.0在IE11中打开项目页面空白的问题解决
2017/07/16 Javascript
ztree简介_动力节点Java学院整理
2017/07/19 Javascript
vue+iview写个弹框的示例代码
2017/12/05 Javascript
nodejs简单实现TCP服务器端和客户端的聊天功能示例
2018/01/04 NodeJs
基于$.ajax()方法从服务器获取json数据的几种方式总结
2018/01/31 Javascript
为vue-router懒加载时下载js的过程中添加loading提示避免无响应问题
2018/04/03 Javascript
在vue中使用setInterval的方法示例
2019/04/16 Javascript
JS实现音乐导航特效
2020/01/06 Javascript
JS+JQuery实现无缝连接轮播图
2020/12/30 jQuery
[02:36]DOTA2英雄基础教程 帕格纳
2014/01/20 DOTA
[01:42]TI4西雅图DOTA2前线报道 第一顿早饭哦
2014/07/08 DOTA
[34:08]2018DOTA2亚洲邀请赛3月29日 小组赛B组 VP VS EG
2018/03/30 DOTA
Python实现在matplotlib中两个坐标轴之间画一条直线光标的方法
2015/05/20 Python
Matplotlib scatter绘制散点图的方法实现
2020/01/02 Python
Python版中国省市经纬度
2020/02/11 Python
django实现后台显示媒体文件
2020/04/07 Python
如何真正的了解python装饰器
2020/08/14 Python
Html5新增标签有哪些
2017/04/13 HTML / CSS
Melijoe美国官网:法国奢侈童装购物网站
2017/04/19 全球购物
Falconeri美国官网:由羊绒和羊毛制成的针织服装
2018/04/08 全球购物
英国最大的运动营养公司之一:LA Muscle
2018/07/02 全球购物
日本最大的旅游网站:Rakuten Travel(乐天旅游)
2018/08/02 全球购物
2015年党员创先争优公开承诺书
2015/04/27 职场文书
2015年前台接待工作总结
2015/05/04 职场文书
2015年主婚人婚礼致辞
2015/07/28 职场文书
2019年暑期法院实习报告
2019/12/18 职场文书
redis复制有可能碰到的问题汇总
2022/04/03 Redis