Python通过Pillow实现图片对比

 更新时间:2020年04月29日 10:25:49   作者:虫师  
这篇文章主要介绍了Python Pillow实现图片对比,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

 在编写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 OpenCV直方图均衡化详解

    Python OpenCV直方图均衡化详解

    本文中将介绍如何使用OpenCV函数执行直方图均衡,并将其应用于灰度和彩色图像,以及将亮度归一化并提高图像的对比度。感兴趣的小伙伴可以了解一下
    2022-02-02
  • 利用Python自动监控网站并发送邮件告警的方法

    利用Python自动监控网站并发送邮件告警的方法

    这篇文章介绍的是通过定时执行python脚本,可以实现定期批量访问网站,如果发现网站打不开,第一时间发邮件到管理员邮箱进行预警。有需要的可以参考借鉴。
    2016-08-08
  • Python如何优雅的实现自增枚举类

    Python如何优雅的实现自增枚举类

    枚举类型在编程中扮演着重要的角色,它们为变量赋予了更加清晰的含义,然而,在Python中,实现自增的枚举类并非直接而简单的任务,本文将深入讨论如何通过不同的方式优雅地实现自增的枚举类,需要的朋友可以参考下
    2023-12-12
  • python实现斐波那契数列的方法示例

    python实现斐波那契数列的方法示例

    每个码农大概都会用自己擅长的语言写出一个斐波那契数列出来,斐波那契数列简单地说,起始两项为0和1,此后的项分别为它的前两项之后。下面这篇文章就给大家详细介绍了python实现斐波那契数列的方法,有需要的朋友们可以参考借鉴,下面来一起看看吧。
    2017-01-01
  • 基于Python实现m3u8视频下载

    基于Python实现m3u8视频下载

    m3u8 是一种基于文本的媒体播放列表文件格式,通常用于指定流媒体播放器播放在线媒体流,本文将利用Python实现m3u8视频下载器,感兴趣的可以了解一下
    2023-05-05
  • Python代码太长换行的实现

    Python代码太长换行的实现

    这篇文章主要介绍了Python代码太长换行的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • Python中字典映射类型的学习教程

    Python中字典映射类型的学习教程

    这篇文章主要介绍了Python中字典映射类型的学习教程,是Python入门学习中的基础知识,需要的朋友可以参考下
    2015-08-08
  • Python实现把回车符\r\n转换成\n

    Python实现把回车符\r\n转换成\n

    这篇文章主要介绍了Python实现把回车符\r\n转换成\n,本文直接给出实现代码,需要的朋友可以参考下
    2015-04-04
  • 基于Python制作GIF表情包生成工具

    基于Python制作GIF表情包生成工具

    在当前无表情包不会聊天的时代,怎么也不能输在表情包数量不足上啊,今天咱们就来基于Python制作一个 gif 生成工具,用来制作表情包也太好用啦
    2023-07-07
  • Python操作SQLite数据库的方法详解【导入,创建,游标,增删改查等】

    Python操作SQLite数据库的方法详解【导入,创建,游标,增删改查等】

    这篇文章主要介绍了Python操作SQLite数据库的方法,简单说明了sqlite数据库的相关概念,并结合实例形式较为详细的分析了Python针对sqlite数据库的导入,创建,游标,增删改查等操作技巧,需要的朋友可以参考下
    2017-07-07

最新评论