首先说说为什么想起来用自动化脚本来实现该项目的自动化。

  工作还是以手工测试为主,业务驱动型的项目大概就是这样,业务不停地变,不断的迭代。

  自动化测试实施的先决条件:

     一 得有时间。

        如果有时间大部分的项目都可以实现自动化,这是毋庸置疑 的。不过一般公司的手工测试岗位测试任务之繁重做过的同学应该有体会。我自己负责五个产品线的迭代版本,不得一刻空闲,几乎每天都埋在业务测试中。

     二 得有必要。

        成本与效率之间很多时候在我所经历的项目中会倾向于手工测试,可以说是严重倾向于手工测试。 大部分迭代版本手工测完上线只需半天或者一到两天,不停地迭代,几乎没有稳定的时候。这些不稳定的版本用自动化实现效率并不比手工测试高。自动化测试更适合于回归测试、接口测试、数据测试。

  

  回归当前项目,页面的兼容性、图形验证等使用手工测试,数据验证部分使用自动化脚本。因为数据部分的变更频率低,并且每天数据都会更新。数据量大且核对数据耗时长,所以有实现自动化的必要性。时间嘛,上班肯定没有,那就下班留。能遇到一个适合自动化的项目也是缘分。

再说说脚本编写和完善的过程。

  • 确定思路

    明确如何取接口数据(requests库),如何取页面数据(selenium)。

  • 按照思路开始写

    整个项目脚本写的第一版一整段代码,没有函数,没有类。从上到下不停地取页面元素,然后请求对应的接口,对比数据。先写出一版来实现必要的功能。

  • 优化

    写着写着会发现很多问题,比如重复代码,接口和页面混合代码混合在一起等等。进行了一些优化:封装了接口类;页面基类,测试页面类;重复代码抽取函数; 引入unittest测试框架;写配置;打日志;截图加上时间戳等等。当然后续还需继续优化。

  • 分享

    跟团队分享,写博客。

最后的项目目录

the end!

python UI自动化实战记录十一: 总结的更多相关文章

  1. python UI自动化实战记录二:请求接口数据并提取数据

    该部分记录如何获取预期结果-接口响应数据,分成两步: 1 获取数据源接口数据 2 提取后续页面对比中要用到的数据 并且为了便于后续调用,将接口相关的都封装到ProjectApi类中. 新建python ...

  2. python UI自动化实战记录五:测试页面2 pageobject

    该部分记录测试页面2-StrategyPage,所有页面2上的元素定位.操作.获取属性等方法都写在该类中. 1 页面2继承自BasePage: 2 页面2第一部分写的是所有的定位器 3 页面2第二部分 ...

  3. python UI自动化实战记录三:pageobject-基类

    脚本思路: 使用pageobject模式,写一个basepage基类,所有页面的通用方法封装到基类中.比如打开页面,关闭页面,等待时间,鼠标移到元素上,获取单个元素,获取一组元素,获取元素的子元素,截 ...

  4. python UI自动化实战记录八:添加配置

    添加配置文件写入测试地址等,当环境切换时只需修改配置文件即可. 1 在项目目录下添加文件 config.ini 写入: [Domain] domain = http://test.domain.cn ...

  5. python UI自动化实战记录七:页面2用例编写

    使用python自带的unittest测试框架,用例继承自unittest.TestCase类. 1 引入接口类和页面类 2 setUp函数中打开页面,定义接口对象 3 tearDown函数中关闭页面 ...

  6. python UI自动化实战记录六:页面1用例编写

    使用python自带的unittest测试框架,用例继承自unittest.TestCase类. 1 引入接口类和页面类 2 setUp函数中打开页面,定义接口对象 3 tearDown函数中关闭页面 ...

  7. python UI自动化实战记录四:测试页面1-pageobject

    该部分记录测试页面1-IndexPage,所有首页上的元素定位.操作.获取属性等方法都写在该类中. 1 首页类继承自BasePage 2 首页类第一部分写的是所有的定位器 3 首页类第二部分类的方法, ...

  8. python UI自动化实战记录一:测试需求与测试思路

    测试需求: 项目包含两个数据展示页面,数据均来自于四个数据源接口. 测试操作步骤: 选择5个大类型中的一个,每个大类型下有3个子类型,选择任一子类型,页面数据更新.需验证页面上的数据与数据源接口数据一 ...

  9. python UI自动化实战记录十:执行测试及测试报告

    使用简单的unittest.TextTestRunner. 思路: 1 在report目录下创建当日测试报告目录 20190113 2 创建测试报告文件 f = 时间戳.txt 3 加载测试集,运行测 ...

随机推荐

  1. orcale 之 多表查询

    在以往的工作中我们不可能单一的从一张表中查询数据,而在开始设计数据库的时候,我们会把一些数据存放在不同的数据表中,因此往往需要从多个数据表中获取到我们想要的数据. 笛卡儿积 在学习这些之前我们先了解一 ...

  2. 使用自动化恶意软件分析cuckoo分析exe程序

    Cuckoo是一款监控函数调用,监控文件读写,监控注册表读写等的自动化恶意分析软件. 包括apk.exe.pdf等多种文件的分析,将任务提交给数据库,host从数据库中读取任务,将样本放入虚拟机中运行 ...

  3. python 初级/中级/高级/核心

    "一等对象": 满足条件:1.在运行时创建 2.能赋值给变量或数据结构中的元素 3.能作为参数传递给函数 4.能作为函数的返回结果 [ 整数.字符串.字典."所有函数&q ...

  4. SQL update 多表连接方法

    SQL Update多表联合更新的方法 () sqlite 多表更新方法 //---------------------------------- update t1 set col1=t2.col1 ...

  5. Java - 避免不必要的对象

    通常,我们更喜欢重用一个对象而不是重新创建一个.如果对象是不可变的,它就始终可以被重用. 下面是一个反面例子: String s = new String("stringette" ...

  6. [javaEE] EL表达式调用java方法

    1.新建个类,类里面定义静态方法 package com.tsh.utils; import java.net.URLEncoder; public class ELFunc { public sta ...

  7. Java基础(七)常用类

    一.Math类 1.Math类介绍 Math类属于java.lang包下面,里面包含用于执行基本数学运算的方法,如初等指数,对数,平方根和三角函数,该类被final修饰. 常用字段: 1.E 表示自然 ...

  8. Linux From Scratch(从零开始构建Linux系统,简称LFS)(三)

    九. 系统配置 1. 安装 LFS-Bootscripts-20150222 软件包包含一套在 LFS 系统启动和关闭时的启动和停止脚本. cd /sources tar -jxf lfs-boots ...

  9. Spring课程 Spring入门篇 7-2 Advice定义及实例

    1 解析 1.1 通知:after和afterreturning的区别 1.2 @RunWith 是什么? 2 代码演练 2.1 注解方式配置通知的两种方式 2.2 异常通知 2.3 非异常通知 1 ...

  10. express组件学习

    一.express 可以做:web application.api... 特性: 适合写简单的路由系统 集成很多模板引擎 中间件系统 二.请求与响应 var express = require('ex ...