Python中的unittest和logging


今天使用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里進行各種個性化的設置


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM