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操作Mysql实例代码教程在线版(查询手册)
Feb 18 Python
python连接oracle数据库实例
Oct 17 Python
Linux下用Python脚本监控目录变化代码分享
May 21 Python
Python下载指定页面上图片的方法
May 12 Python
python写一个md5解密器示例
Feb 23 Python
用Django写天气预报查询网站
Oct 21 Python
Pandas过滤dataframe中包含特定字符串的数据方法
Nov 07 Python
django表单的Widgets使用详解
Jul 22 Python
实例详解Python装饰器与闭包
Jul 29 Python
NumPy排序的实现
Jan 21 Python
opencv之颜色过滤只留下图片中的红色区域操作
Jun 05 Python
python输出结果刷新及进度条的实现操作
Jul 13 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中的观察者模式
2010/03/24 PHP
PHP常用的文件操作函数经典收藏
2013/04/02 PHP
PHP使用header()输出图片缓存实例
2014/12/09 PHP
php smtp实现发送邮件功能
2017/06/22 PHP
tp5(thinkPHP5)操作mongoDB数据库的方法
2018/01/20 PHP
thinkPHP框架动态配置用法实例分析
2018/06/14 PHP
Laravel实现通过blade模板引擎渲染视图
2019/10/25 PHP
兼容IE和Firefox的javascript获取iframe文档内容的函数
2011/08/15 Javascript
javascript内存管理详细解析
2013/11/11 Javascript
JS保留两位小数,多位小数的示例代码
2014/01/07 Javascript
轻量级javascript 框架Backbone使用指南
2015/07/24 Javascript
js点击文本框弹出可选择的checkbox复选框
2016/02/03 Javascript
jQuery简单设置文本框回车事件的方法
2016/08/01 Javascript
jQuery实现联动下拉列表查询框
2017/01/04 Javascript
NodeJs模拟登陆正方教务
2017/04/28 NodeJs
Jquery+Ajax+xml实现中国地区选择三级联动菜单效果(推荐)
2017/06/09 jQuery
vue深度监听(监听对象和数组的改变)与立即执行监听实例
2020/09/04 Javascript
[01:11]steam端dota2实名认证操作流程视频
2021/03/11 DOTA
Python自定义简单图轴简单实例
2018/01/08 Python
python实现人民币大写转换
2018/06/20 Python
Python中的字符串切片(截取字符串)的详解
2019/05/15 Python
Ubuntu18.04下python版本完美切换的解决方法
2019/06/14 Python
Python基于tkinter canvas实现图片裁剪功能
2020/11/05 Python
Python实现粒子群算法的示例
2021/02/14 Python
CSS中垂直居中的简单实现方法
2015/07/06 HTML / CSS
奥地利网上现代灯具和灯饰店:Lampenwelt.at
2018/01/29 全球购物
size?瑞典:英国伦敦的球鞋精品店
2018/03/01 全球购物
聚网科技C++面试笔试题
2015/09/01 面试题
给客户的道歉信
2014/01/13 职场文书
模具专业毕业推荐信
2014/03/08 职场文书
家长给学校的建议书
2014/05/15 职场文书
2014年电信员工工作总结
2014/12/19 职场文书
重阳节座谈会主持词
2015/07/03 职场文书
校园歌手大赛主持词
2015/07/03 职场文书
公司转让协议书
2016/03/19 职场文书
GTX1650super好不好 gtx1650super显卡属于什么级别
2022/04/08 数码科技