今天使用Python的unittest模塊寫了些單元測試,現記錄下要點:
使用unittest的基本格式如下:
import unittest class Test(unittest.TestCase): def setUp(self): pass def test_a(self): pass def test_b(self): pass def tearDown(self): pass if __name__ == '__main__': unittest.main()
基本上網上已經已經說的很詳細了,在使用過程中發現以下幾點比較重要:
1.unittest執行順序,對於每一個test,都要先執行setUp,再執行tearDown,並不是setUp執行完一次就了事了,對以上格式,setUp和tearDown應該執行兩次,而不是一次
2.每一個test是按照函數名的字母順序來執行的,換言之,對以上格式而言,即使將test_a,test_b交換位置,仍然是先執行test_a,再執行test_b
3.assert方法異常豐富,除了最基本的assertEqual,assertFalse,還有assertIs,assertIsNotNone等
4.1 在unittest中要查看更詳細的信息,可以print,但是較不方便,可配置使用logging:
import logging logging.basicConfig(filename='/Users/wenli.xu/Desktop/log1.log', level=logging.INFO)
其中,filename指示了日志路徑,level指示了只有嚴重程度大於等於INFO才會被日志記錄(logging的默認level是WARNING)。
嚴重程度從輕到重依次為:DEBUG,INFO,WARNING,ERROR,CRITICAL
此后使用以下方法,可將關鍵信息輸出到相應的文件中:
logging.info('important info: %s', info)
若使用logging.debug('XXX'),消息不會被記錄在日志里。
4.2 使用logging.getLogger('log_name')可以得到root logger(logging)的實例,可在logger里進行各種個性化的設置