分享

Python实现自动化测试之Pillow实现图片对比(附例子讲解)

 lihuimail 2018-01-12

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

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

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

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

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

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

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

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

安装:

Python实现自动化测试之Pillow实现图片对比(附例子讲解)

> python3 -m pip install Pillow-3.0.0-cp35-none-win_amd64.whlProcessing c:\selenium\pillow-3.0.0-cp35-none-win_amd64.whl Installing collected packages: Pillow Successfully installed Pillow-3.0.0

Python实现自动化测试之Pillow实现图片对比(附例子讲解)

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

Python实现自动化测试之Pillow实现图片对比(附例子讲解)

from PIL import Imageimport mathimport operatorfrom functools import reducedef 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 resultif __name__ == '__main__': img1 = './img1.jpg' # 指定图片路径 img2 = './img2.jpg' result = image_contrast(img1,img2) print(result)

Python实现自动化测试之Pillow实现图片对比(附例子讲解)

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

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

=====================

关于Pillow库的详细文档:

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


我也写了很多其他的非常简单的入门级的爬虫详细教程,

关注后,点击我的头像,就可以查看到。

欢迎大家一起留言讨论和交流,谢谢!


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多