Python通过Pillow实现图片对比

作者:虫师 时间:2023-07-12 08:25:15 

在编写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

来源:https://www.cnblogs.com/fnng/p/4881102.html

标签:Python,Pillow,图片
0
投稿

猜你喜欢

  • python爬虫使用requests发送post请求示例详解

    2022-02-26 16:50:22
  • Python使用QQ邮箱发送邮件报错smtplib.SMTPAuthenticationError

    2023-07-07 06:58:52
  • 解决pycharm编辑区显示yaml文件层级结构遇中文乱码问题

    2022-03-21 10:30:42
  • python 将列表里的字典元素合并为一个字典实例

    2021-07-26 15:45:09
  • Appium自动化测试实现H5页面元素定位

    2023-06-22 02:25:53
  • 详解go中的引用类型

    2023-08-28 06:02:31
  • Python获取百度热搜的完整代码

    2023-09-06 11:33:32
  • MySQL性能优化的一些技巧帮助你的数据库

    2024-01-20 12:44:22
  • 利用ASP在线维护数据库

    2007-10-12 13:53:00
  • Python利用treap实现双索引的方法

    2022-02-28 15:59:44
  • JavaScript+Canvas实现带跳动效果的粒子动画

    2024-04-23 09:08:06
  • python实现健康码查验系统

    2022-06-27 06:31:34
  • OpenCV每日函数之BarcodeDetector类条码检测器

    2023-03-28 02:22:39
  • win10从零安装配置pytorch全过程图文详解

    2022-07-01 20:54:55
  • PHP生成sitemap.xml地图函数

    2024-06-05 09:23:16
  • MySQL使用profile查询性能的操作教程

    2024-01-19 10:22:22
  • TensorFLow 数学运算的示例代码

    2023-12-13 21:30:16
  • 详解Python import方法引入模块的实例

    2021-01-10 04:21:08
  • 单点登录之cas集成sonar的配置方法

    2022-01-17 00:45:58
  • python人工智能tensorflow常用激活函数Activation Functions

    2023-08-01 12:45:02
  • asp之家 网络编程 m.aspxhome.com