自定義斷言的實(shí)現(xiàn)方法

斷言定義

熟悉單元測試的同學(xué)都知道在測試用例中,執(zhí)行完測試用例后,通過斷言(assert)判斷測試結(jié)果是pass還是fail。不同的單元測試框架都提供了斷言機(jī)制,我們這里以python為例進(jìn)行說明。Python中的斷言類型豐富,最常用的是基礎(chǔ)斷言和集合斷言?;A(chǔ)斷言包括的核心方法如下所示,主要功能是對兩個值進(jìn)行比較。


集合斷言包括的核心方法如下所示,主要功能是對多個值進(jìn)行比較。


自定義斷言基礎(chǔ)編碼

我們可以使用 ‘==’來判斷兩個對象的值是否相等,進(jìn)而打造我們自己的斷言函數(shù)。核心代碼如下:

def my_equal(p_a,p_b):

????? if p_a==p_b:

????????? return True

????? else:

????????? return False

我們可以輸入不同的參數(shù)進(jìn)行測試

print(my_equal('a',123)) 顯示False

print(my_equal('a', b')) 顯示False

print(my_equal('a', a')) 顯示True

print(my_equal(True,True)) 顯示True

l1=[1,2,3]

l2=[1,2,3]

print(my_equal(l1,l2)) 顯示True

可以看到這個簡單的方法就解決了單值和多值的比較操作!

自定義斷言擴(kuò)展

因?yàn)閙y_equal方法是我們自己定義的方法,我們就可以對其進(jìn)行擴(kuò)展,比如可以把比較結(jié)果寫入一個日志中!我們可以使用python的logging模塊解決該問題,核心代碼如下:

import logging? # 引入logging模塊

logging.basicConfig(level=logging.DEBUG, #設(shè)置日志級別

filename='report.log', #設(shè)置日志輸出到當(dāng)前py文件的report.log中

format='%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s')? # logging.basicConfig函數(shù)對日志的輸出

修改my_equal源碼,增加日志寫入功能,代碼如下:

def my_equal(p_a,p_b):

????? if p_a==p_b:

????????? logging.info(str(p_a)+'等于'+str(p_b)+'\n')#寫入日志

?????? ?? return True

????? else:

?? ? ? ? ? logging.error(str(p_a) + '不等于' + str(p_b)+'\n') #寫入日志

?????????? return False

在此調(diào)用my_equal方法,會在report.log中輸出如下內(nèi)容:

2020-05-19 15:11:10,017 - case_demo.py[line:13] - ERROR: a不等于123

2020-05-19 15:11:10,028 - case_demo.py[line:13] - ERROR: a不等于<__main__.A object at 0x0000024D174D97C8>

2020-05-19 15:11:10,028 - case_demo.py[line:10] - INFO: True等于True

2020-05-19 15:11:10,028 - case_demo.py[line:10] - INFO: [1, 2, 3]等于[1, 2, 3]

以上就是把測試校驗(yàn)結(jié)果寫入日志的核心方法,大家也可以對其進(jìn)行擴(kuò)展,把日志寫入到html文件中,然后在加上漂亮的樣式來打造自己的測試報(bào)告,這里只是拋磚引玉,有興趣的同學(xué)可以自己進(jìn)行實(shí)踐!

總結(jié)

現(xiàn)在會編碼已經(jīng)成了測試人員的必備技能,但是測試人員平時又很少有編碼的機(jī)會,所以我們要在實(shí)際工作中自己發(fā)現(xiàn)可以通過編碼來提升效率的點(diǎn),然后不斷的實(shí)踐和完善,慢慢的大家的代碼能力就會得到顯著提升。還是那句話,代碼是寫出來的,所以大家一定要多動手!原創(chuàng)不易,如果文章幫到了你,歡迎轉(zhuǎn)發(fā),讓更多的朋友受益!跟著Kevin老師一起,每天進(jìn)步一點(diǎn)點(diǎn),終會質(zhì)變!讓你面試拿高薪!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容