斷言定義
熟悉單元測試的同學(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ì)變!讓你面試拿高薪!