Python通過(guò)Pillow實(shí)現(xiàn)圖片對(duì)比
在編寫(xiě)Web自動(dòng)化測(cè)試用例的時(shí)候,如何寫(xiě)斷言使新手不解,嚴(yán)格意義上來(lái)講,沒(méi)有斷言的自動(dòng)化腳本不能叫測(cè)試用例。就像功能測(cè)試一樣,當(dāng)測(cè)試人員做了一些操作之后必然會(huì)判斷實(shí)際結(jié)果是否等于預(yù)期結(jié)果,只不過(guò),這個(gè)過(guò)程由測(cè)試人員的眼睛完成。而自動(dòng)化測(cè)試腳本必然要通過(guò)一此信息來(lái)斷定用例是否成功。
這其中常用的三種信息分別是:
title :頁(yè)面不同或顯示不同時(shí)往往title也會(huì)有所變化。
url :與title類(lèi)似,當(dāng)頁(yè)面發(fā)生變化時(shí),跟著url也會(huì)改變。
text:相比前者應(yīng)用更廣泛,因?yàn)橥ㄟ^(guò)它可以獲取頁(yè)面上的任意標(biāo)識(shí)性文本,用于“證明”用例執(zhí)行是成功的。例如,登陸之后人用戶(hù)名,查詢(xún)的結(jié)果等。
但是,在有些情況下,無(wú)法獲取這些信息來(lái)證明用例是成功的怎么辦?當(dāng)然,下策是不寫(xiě)斷言,腳本運(yùn)行沒(méi)有報(bào)錯(cuò)來(lái)證明用例執(zhí)行成功,這當(dāng)然是無(wú)奈之舉。除此之外還可以選擇斷言?xún)蓮垐D片,在用例執(zhí)行正確的情況下對(duì)當(dāng)前頁(yè)面進(jìn)行截圖,在用例執(zhí)行的過(guò)程中再次進(jìn)行截圖。通過(guò)對(duì)兩張圖片進(jìn)行比較,從而判斷用例是否運(yùn)行成功。
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
注意,因?yàn)槲冶緳C(jī)同時(shí)安裝了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é)果為浮點(diǎn)類(lèi)型“0.0”,如果不相同則返回結(jié)果值越大。
這樣就可以在自動(dòng)化測(cè)試用例中調(diào)用該方法來(lái)斷言執(zhí)行結(jié)果。
關(guān)于Pillow庫(kù)的詳細(xì)文檔:
http://pillow.readthedocs.org/en/latest/index.html
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
利用Python自動(dòng)監(jiān)控網(wǎng)站并發(fā)送郵件告警的方法
這篇文章介紹的是通過(guò)定時(shí)執(zhí)行python腳本,可以實(shí)現(xiàn)定期批量訪問(wèn)網(wǎng)站,如果發(fā)現(xiàn)網(wǎng)站打不開(kāi),第一時(shí)間發(fā)郵件到管理員郵箱進(jìn)行預(yù)警。有需要的可以參考借鑒。2016-08-08
Python如何優(yōu)雅的實(shí)現(xiàn)自增枚舉類(lèi)
枚舉類(lèi)型在編程中扮演著重要的角色,它們?yōu)樽兞抠x予了更加清晰的含義,然而,在Python中,實(shí)現(xiàn)自增的枚舉類(lèi)并非直接而簡(jiǎn)單的任務(wù),本文將深入討論如何通過(guò)不同的方式優(yōu)雅地實(shí)現(xiàn)自增的枚舉類(lèi),需要的朋友可以參考下2023-12-12
python實(shí)現(xiàn)斐波那契數(shù)列的方法示例
每個(gè)碼農(nóng)大概都會(huì)用自己擅長(zhǎng)的語(yǔ)言寫(xiě)出一個(gè)斐波那契數(shù)列出來(lái),斐波那契數(shù)列簡(jiǎn)單地說(shuō),起始兩項(xiàng)為0和1,此后的項(xiàng)分別為它的前兩項(xiàng)之后。下面這篇文章就給大家詳細(xì)介紹了python實(shí)現(xiàn)斐波那契數(shù)列的方法,有需要的朋友們可以參考借鑒,下面來(lái)一起看看吧。2017-01-01
Python代碼太長(zhǎng)換行的實(shí)現(xiàn)
這篇文章主要介紹了Python代碼太長(zhǎng)換行的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
Python中字典映射類(lèi)型的學(xué)習(xí)教程
這篇文章主要介紹了Python中字典映射類(lèi)型的學(xué)習(xí)教程,是Python入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-08-08
Python實(shí)現(xiàn)把回車(chē)符\r\n轉(zhuǎn)換成\n
這篇文章主要介紹了Python實(shí)現(xiàn)把回車(chē)符\r\n轉(zhuǎn)換成\n,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-04-04
Python操作SQLite數(shù)據(jù)庫(kù)的方法詳解【導(dǎo)入,創(chuàng)建,游標(biāo),增刪改查等】
這篇文章主要介紹了Python操作SQLite數(shù)據(jù)庫(kù)的方法,簡(jiǎn)單說(shuō)明了sqlite數(shù)據(jù)庫(kù)的相關(guān)概念,并結(jié)合實(shí)例形式較為詳細(xì)的分析了Python針對(duì)sqlite數(shù)據(jù)庫(kù)的導(dǎo)入,創(chuàng)建,游標(biāo),增刪改查等操作技巧,需要的朋友可以參考下2017-07-07

