python UI自动化实战记录十一: 总结
首先说说为什么想起来用自动化脚本来实现该项目的自动化。
工作还是以手工测试为主,业务驱动型的项目大概就是这样,业务不停地变,不断的迭代。
自动化测试实施的先决条件:
一 得有时间。
如果有时间大部分的项目都可以实现自动化,这是毋庸置疑 的。不过一般公司的手工测试岗位测试任务之繁重做过的同学应该有体会。我自己负责五个产品线的迭代版本,不得一刻空闲,几乎每天都埋在业务测试中。
二 得有必要。
成本与效率之间很多时候在我所经历的项目中会倾向于手工测试,可以说是严重倾向于手工测试。 大部分迭代版本手工测完上线只需半天或者一到两天,不停地迭代,几乎没有稳定的时候。这些不稳定的版本用自动化实现效率并不比手工测试高。自动化测试更适合于回归测试、接口测试、数据测试。
回归当前项目,页面的兼容性、图形验证等使用手工测试,数据验证部分使用自动化脚本。因为数据部分的变更频率低,并且每天数据都会更新。数据量大且核对数据耗时长,所以有实现自动化的必要性。时间嘛,上班肯定没有,那就下班留。能遇到一个适合自动化的项目也是缘分。
再说说脚本编写和完善的过程。
- 确定思路
明确如何取接口数据(requests库),如何取页面数据(selenium)。
- 按照思路开始写
整个项目脚本写的第一版一整段代码,没有函数,没有类。从上到下不停地取页面元素,然后请求对应的接口,对比数据。先写出一版来实现必要的功能。
- 优化
写着写着会发现很多问题,比如重复代码,接口和页面混合代码混合在一起等等。进行了一些优化:封装了接口类;页面基类,测试页面类;重复代码抽取函数; 引入unittest测试框架;写配置;打日志;截图加上时间戳等等。当然后续还需继续优化。
- 分享
跟团队分享,写博客。
最后的项目目录
the end!
python UI自动化实战记录十一: 总结的更多相关文章
- python UI自动化实战记录二:请求接口数据并提取数据
该部分记录如何获取预期结果-接口响应数据,分成两步: 1 获取数据源接口数据 2 提取后续页面对比中要用到的数据 并且为了便于后续调用,将接口相关的都封装到ProjectApi类中. 新建python ...
- python UI自动化实战记录五:测试页面2 pageobject
该部分记录测试页面2-StrategyPage,所有页面2上的元素定位.操作.获取属性等方法都写在该类中. 1 页面2继承自BasePage: 2 页面2第一部分写的是所有的定位器 3 页面2第二部分 ...
- python UI自动化实战记录三:pageobject-基类
脚本思路: 使用pageobject模式,写一个basepage基类,所有页面的通用方法封装到基类中.比如打开页面,关闭页面,等待时间,鼠标移到元素上,获取单个元素,获取一组元素,获取元素的子元素,截 ...
- python UI自动化实战记录八:添加配置
添加配置文件写入测试地址等,当环境切换时只需修改配置文件即可. 1 在项目目录下添加文件 config.ini 写入: [Domain] domain = http://test.domain.cn ...
- python UI自动化实战记录七:页面2用例编写
使用python自带的unittest测试框架,用例继承自unittest.TestCase类. 1 引入接口类和页面类 2 setUp函数中打开页面,定义接口对象 3 tearDown函数中关闭页面 ...
- python UI自动化实战记录六:页面1用例编写
使用python自带的unittest测试框架,用例继承自unittest.TestCase类. 1 引入接口类和页面类 2 setUp函数中打开页面,定义接口对象 3 tearDown函数中关闭页面 ...
- python UI自动化实战记录四:测试页面1-pageobject
该部分记录测试页面1-IndexPage,所有首页上的元素定位.操作.获取属性等方法都写在该类中. 1 首页类继承自BasePage 2 首页类第一部分写的是所有的定位器 3 首页类第二部分类的方法, ...
- python UI自动化实战记录一:测试需求与测试思路
测试需求: 项目包含两个数据展示页面,数据均来自于四个数据源接口. 测试操作步骤: 选择5个大类型中的一个,每个大类型下有3个子类型,选择任一子类型,页面数据更新.需验证页面上的数据与数据源接口数据一 ...
- python UI自动化实战记录十:执行测试及测试报告
使用简单的unittest.TextTestRunner. 思路: 1 在report目录下创建当日测试报告目录 20190113 2 创建测试报告文件 f = 时间戳.txt 3 加载测试集,运行测 ...
随机推荐
- MySQL查询近一个月的数据
MySQL查询近一个月的数据 近一个月统计SQL select user_id, user_name, createtime from t_user where DATE_SUB(CURDATE(), ...
- WPF的布局--StackPanel
1. StackPanel是以堆叠的方式来显示控件(从左到右,或者从上到下) 默认是从上到下显示的,并且宽度为StackPanel的宽度,高度自动适应控件中内容的高度(未对控件进行设置时) 如图: 代 ...
- 连接池连接mysql数据库 这故障在哪?
- 问题集录04--json和jsonp讲解
JSON和JSONP JSON(Javascript Object Notation)是一种轻量级的数据交换格式,用于在浏览器和服务器之间交换信息. JSONP(JSON With Padding ...
- 2.VS2012为创建的类添加注释的模板
在项目中给类添加注释的优点: 1.方便查看这个类是为了那些功能 2.是成员小组中的谁负责编写的 根据自己的vs的安装路径找到类模板的位置:D:\Program Files (x86)\Microsof ...
- Asp.NET MVC4 + Ajax 实现多文件上传
本文转自http://www.cnblogs.com/freeliver54/archive/2013/05/15/3079700.html JS部分测试可以,jQuery部分没有测试先留着 HTML ...
- element ui tabl 输出Html
在使用element ui的表格的时候有遇到过表格中的数据需要换行的问题,数据是由后台传回的包含分隔符的字符串,在尝试过使用slot和直接输出html后并不能实现 解决方法:使用column的form ...
- Java基础(十二)IO输入输出
一.IO 概述 1.IO 概念 IO:I 代表 Input 输入:O 代表 Output 输出. Java 中 IO 是以流为基础进行输入输出,所有的数据被串行化(保存)写入输出流,或者从输入流读入. ...
- Java基础(十一)集合框架
一.集合框架 1.集合框架定义 集合框架是一个用来代表和操纵集合的统一架构.所有的集合框架都包含如下内容: 接口:是代表集合的抽象数据类型.接口允许集合独立操纵其代表的细节.在面向对象的语言,接口通常 ...
- Idea 配置启动JDK___在windows中使用Intellij Idea时选择自定义的64位JVM
略过下面的叙述快速配置 配置你的Idea启动jdk (Idea15之后的版本启动不要JDK1.8) 添加环境变量IDEA_JDK_64,配置和JAVA_HOME环境变量相同,路径写到1.8的jdk就 ...