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数据可视化编程通过Matplotlib创建散点图代码示例
Dec 09 Python
用Python实现KNN分类算法
Dec 22 Python
python实现排序算法解析
Sep 08 Python
Python 通过调用接口获取公交信息的实例
Dec 17 Python
python 对多个csv文件分别进行处理的方法
Jan 07 Python
python在OpenCV里实现投影变换效果
Aug 30 Python
Pytorch 使用不同版本的cuda的方法步骤
Apr 02 Python
Pytorch转onnx、torchscript方式
May 25 Python
python中pandas库中DataFrame对行和列的操作使用方法示例
Jun 14 Python
浅析Python __name__ 是什么
Jul 07 Python
基于Python实现体育彩票选号器功能代码实例
Sep 16 Python
pytorch锁死在dataloader(训练时卡死)
May 28 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创建和删除目录函数介绍和递归删除目录函数分享
2014/11/18 PHP
PHP设置images目录不充许http访问的方法
2016/11/01 PHP
浅谈ThinkPHP中initialize和construct的区别
2017/04/01 PHP
PHP Post获取不到非表单数据的问题解决办法
2018/02/27 PHP
laravel框架中表单请求类型和CSRF防护实例分析
2019/11/23 PHP
PHP SESSION跨页面传递失败解决方案
2020/12/11 PHP
HTML中事件触发列表与解说
2007/07/09 Javascript
JavaScript Cookie的读取和写入函数
2009/12/08 Javascript
简单实例处理url特殊符号&处理(2种方法)
2013/04/02 Javascript
js获取电脑分辨率的思路及操作
2013/11/22 Javascript
jquery获取颜色在ie和ff下的区别示例介绍
2014/03/28 Javascript
JavaScript中的无阻塞加载性能优化方案
2014/10/10 Javascript
jQuery实现渐变弹出层和弹出菜单的方法
2015/02/20 Javascript
jQuery中toggle()函数的使用实例
2015/04/17 Javascript
HTML5+jQuery实现搜索智能匹配功能
2017/03/24 jQuery
React Native 环境搭建的教程
2017/08/19 Javascript
vue系列之动态路由详解【原创】
2017/09/10 Javascript
初识 Vue.js 中的 *.Vue文件
2017/11/22 Javascript
AngularJS实现的根据数量与单价计算总价功能示例
2017/12/26 Javascript
[06:42]DOTA2每周TOP10 精彩击杀集锦vol.1
2014/06/25 DOTA
[03:48]DOTA2完美大师赛主赛事第二日精彩集锦
2017/11/24 DOTA
Python基于hashlib模块的文件MD5一致性加密验证示例
2018/02/10 Python
python中ASCII码和字符的转换方法
2018/07/09 Python
Python数据预处理之数据规范化(归一化)示例
2019/01/08 Python
利用Python实现kNN算法的代码
2019/08/16 Python
李维斯牛仔裤荷兰官方网站:Levi’s NL
2020/08/23 全球购物
计算机应用与科学个人的自我评价
2013/11/15 职场文书
庆六一活动总结
2014/08/29 职场文书
班子四风对照检查材料思想汇报
2014/09/29 职场文书
常务副县长“四风”个人对照检查材料思想汇报
2014/10/02 职场文书
2014年科普工作总结
2014/12/06 职场文书
国家助学金感谢信
2015/01/21 职场文书
教师考核表个人总结
2015/02/12 职场文书
2016年教师节感恩寄语
2015/12/04 职场文书
2016圣诞节贺卡寄语
2015/12/07 职场文书
小学思想品德教学反思
2016/02/24 职场文书