Python通过Pillow实现图片对比


Posted in Python onApril 29, 2020

 在编写Web自动化测试用例的时候,如何写断言使新手不解,严格意义上来讲,没有断言的自动化脚本不能叫测试用例。就像功能测试一样,当测试人员做了一些操作之后必然会判断实际结果是否等于预期结果,只不过,这个过程由测试人员的眼睛完成。而自动化测试脚本必然要通过一此信息来断定用例是否成功。

这其中常用的三种信息分别是:

title :页面不同或显示不同时往往title也会有所变化。

url :与title类似,当页面发生变化时,跟着url也会改变。

text:相比前者应用更广泛,因为通过它可以获取页面上的任意标识性文本,用于“证明”用例执行是成功的。例如,登陆之后人用户名,查询的结果等。

但是,在有些情况下,无法获取这些信息来证明用例是成功的怎么办?当然,下策是不写断言,脚本运行没有报错来证明用例执行成功,这当然是无奈之举。除此之外还可以选择断言两张图片,在用例执行正确的情况下对当前页面进行截图,在用例执行的过程中再次进行截图。通过对两张图片进行比较,从而判断用例是否运行成功。

Pillow下载:https://pypi.python.org/pypi/Pillow/3.0.0

根据自己的操作系统以及python版本选择下载。

安装:

> python3 -m pip install Pillow-3.0.0-cp35-none-win_amd64.whl

Processing c:\selenium\pillow-3.0.0-cp35-none-win_amd64.whl

Installing collected packages: Pillow

Successfully installed Pillow-3.0.0

注意,因为我本机同时安装了Python2.7和Python3.5,所以,这里特意指定安装在Python3的下面。

from PIL import Image
import math
import operator
from functools import reduce


def image_contrast(img1, img2):

  image1 = Image.open(img1)
  image2 = Image.open(img2)

  h1 = image1.histogram()
  h2 = image2.histogram()

  result = math.sqrt(reduce(operator.add, list(map(lambda a,b: (a-b)**2, h1, h2)))/len(h1) )
  return result

if __name__ == '__main__':
  img1 = "./img1.jpg" # 指定图片路径
  img2 = "./img2.jpg"
  result = image_contrast(img1,img2)
  print(result)

如果两张图片完全相等,则返回结果为浮点类型“0.0”,如果不相同则返回结果值越大。

这样就可以在自动化测试用例中调用该方法来断言执行结果。

关于Pillow库的详细文档:

http://pillow.readthedocs.org/en/latest/index.html

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实例分享:快速查找出被挂马的文件
Jun 08 Python
使用Python压缩和解压缩zip文件的教程
May 06 Python
Python实现TCP/IP协议下的端口转发及重定向示例
Jun 14 Python
Python 性能优化技巧总结
Nov 01 Python
python逐行读写txt文件的实例讲解
Apr 03 Python
解决Python获取字典dict中不存在的值时出错问题
Oct 17 Python
python数据持久存储 pickle模块的基本使用方法解析
Aug 30 Python
Python Opencv提取图片中某种颜色组成的图形的方法
Sep 19 Python
Python模拟登录之滑块验证码的破解(实例代码)
Nov 18 Python
From CSV to SQLite3 by python 导入csv到sqlite实例
Feb 14 Python
超级实用的8个Python列表技巧
Aug 24 Python
PyTorch如何搭建一个简单的网络
Aug 24 Python
Python unittest单元测试框架实现参数化
Apr 29 #Python
Python ORM框架Peewee用法详解
Apr 29 #Python
3种适用于Python的疯狂秘密武器及原因解析
Apr 29 #Python
Pytorch十九种损失函数的使用详解
Apr 29 #Python
Python格式化输出--%s,%d,%f的代码解析
Apr 29 #Python
Python爬虫工具requests-html使用解析
Apr 29 #Python
Python基于Hypothesis测试库生成测试数据
Apr 29 #Python
You might like
利用php实现禁用IE和火狐的缓存问题
2012/12/03 PHP
php将html转成wml的WAP标记语言实例
2015/07/08 PHP
php基于Snoopy解析网页html的方法
2015/07/09 PHP
thinkphp框架下404页面设置 仅三步
2016/05/14 PHP
PHP文件类型检查及fileinfo模块安装使用详解
2019/05/09 PHP
jQuery 性能优化指南 (1)
2009/05/21 Javascript
js setTimeout()函数介绍及应用以倒计时为例
2013/12/12 Javascript
JavaScript Promise启示录
2014/08/12 Javascript
JS动态创建DOM元素的方法
2015/06/09 Javascript
JS使用eval解析JSON的注意事项分析
2015/11/14 Javascript
JavaScript中点击事件的写法
2016/06/28 Javascript
微信小程序 Video API实例详解
2016/10/02 Javascript
浅析JS中的 map, filter, some, every, forEach, for in, for of 用法总结
2017/03/29 Javascript
从零开始学习Node.js系列教程四:多页面实现数学运算的client端和server端示例
2017/04/13 Javascript
通过fastclick源码分析彻底解决tap“点透”
2017/12/24 Javascript
基于Vue2x实现响应式自适应轮播组件插件VueSliderShow功能
2018/05/16 Javascript
如何搭建一个完整的Vue3.0+ts的项目步骤
2020/10/18 Javascript
Python实现利用最大公约数求三个正整数的最小公倍数示例
2017/09/30 Python
Python快速排序算法实例分析
2017/11/29 Python
Python tornado队列示例-一个并发web爬虫代码分享
2018/01/09 Python
Python3.5 处理文本txt,删除不需要的行方法
2018/12/10 Python
Python3 A*寻路算法实现方式
2019/12/24 Python
Python MOCK SERVER moco模拟接口测试过程解析
2020/04/13 Python
opencv-python的RGB与BGR互转方式
2020/06/02 Python
CSS3使用border-radius属性制作圆角
2014/12/22 HTML / CSS
非常震撼的纯CSS3人物行走动画
2016/02/24 HTML / CSS
英国在线房屋中介网站:Yopa
2018/01/09 全球购物
2019年Java 最常见的 面试题
2016/10/19 面试题
学生会招新策划书
2014/02/14 职场文书
单位工作证明书格式
2014/10/04 职场文书
习总书记三严三实学习心得体会
2014/10/13 职场文书
党员贯彻十八大精神思想汇报范文
2014/10/25 职场文书
八年级英语教学计划
2015/01/23 职场文书
2015年毕业生个人自荐书
2015/03/24 职场文书
创业计划书之服装
2019/10/07 职场文书
竞选稿之小学班干部
2019/10/31 职场文书