Python通過Pillow實現(xiàn)圖片對比
在編寫Web自動化測試用例的時候,如何寫斷言使新手不解,嚴(yán)格意義上來講,沒有斷言的自動化腳本不能叫測試用例。就像功能測試一樣,當(dāng)測試人員做了一些操作之后必然會判斷實際結(jié)果是否等于預(yù)期結(jié)果,只不過,這個過程由測試人員的眼睛完成。而自動化測試腳本必然要通過一此信息來斷定用例是否成功。
這其中常用的三種信息分別是:
title :頁面不同或顯示不同時往往title也會有所變化。
url :與title類似,當(dāng)頁面發(fā)生變化時,跟著url也會改變。
text:相比前者應(yīng)用更廣泛,因為通過它可以獲取頁面上的任意標(biāo)識性文本,用于“證明”用例執(zhí)行是成功的。例如,登陸之后人用戶名,查詢的結(jié)果等。
但是,在有些情況下,無法獲取這些信息來證明用例是成功的怎么辦?當(dāng)然,下策是不寫斷言,腳本運行沒有報錯來證明用例執(zhí)行成功,這當(dāng)然是無奈之舉。除此之外還可以選擇斷言兩張圖片,在用例執(zhí)行正確的情況下對當(dāng)前頁面進行截圖,在用例執(zhí)行的過程中再次進行截圖。通過對兩張圖片進行比較,從而判斷用例是否運行成功。
Pillow下載:https://pypi.python.org/pypi/Pillow/3.0.0
根據(jù)自己的操作系統(tǒng)以及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)
如果兩張圖片完全相等,則返回結(jié)果為浮點類型“0.0”,如果不相同則返回結(jié)果值越大。
這樣就可以在自動化測試用例中調(diào)用該方法來斷言執(zhí)行結(jié)果。
關(guān)于Pillow庫的詳細(xì)文檔:
http://pillow.readthedocs.org/en/latest/index.html
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python實現(xiàn)愛奇藝登陸密碼RSA加密的方法示例詳解
這篇文章主要介紹了python實現(xiàn)愛奇藝登陸的密碼RSA加密的方法,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-05-05
如何準(zhǔn)確判斷請求是搜索引擎爬蟲(蜘蛛)發(fā)出的請求
我們的網(wǎng)站經(jīng)常被各種蜘蛛爬蟲光顧,由于這些爬蟲都有UserAgent,所以很多朋友使用UserAgent判斷請求的發(fā)起者是否是搜索引擎爬蟲的方式是很不準(zhǔn)確的,接下來,通過本篇文章給大家介紹準(zhǔn)確判斷請求是搜索引擎爬蟲(蜘蛛)發(fā)出的請求的方法,需要的朋友可以參考下2015-10-10
PyCharm 無法 import pandas 程序卡住的解決方式
這篇文章主要介紹了PyCharm 無法 import pandas 程序卡住的解決方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03

