1. 程式人生 > 實用技巧 >python封裝logging日誌模組,與selenium連用

python封裝logging日誌模組,與selenium連用

推薦一篇博主部落格:https://www.cnblogs.com/CJOKER/p/8295272.html

它裡面講述了日誌的顯示順序、如何在控制檯進行顯示,以及檔案配置都挺詳細的,可以先看看推薦的內容 我這邊按專案的情況對使用的日誌模組進行了一個封裝

1.日誌檔案的配置 Logger.conf

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 ################################################
###########propagate 是否繼承父類的log資訊,0:否 [loggers] keys=root,example01,example02#3個格式的日誌 [logger_root] level=DEBUG#列印日誌級別,從高到低 handlers=hand01,hand02 [logger_example01] handlers=hand01,hand02#用哪個日誌處理程式來打日誌(怎麼打日誌:1)打在螢幕 2 打在檔案裡 3)打在可以回滾的檔案裡) qualname=example01 propagate=0 [logger_example02] handlers=hand01,hand03 qualname
=example02 propagate=0 ############################################### [handlers] keys=hand01,hand02,hand03 [handler_hand01] class=StreamHandler#用StreamHandler(流模式)列印 level=DEBUG#列印模式 formatter=form01#列印格式 args=(sys.stderr,) [handler_hand02] class=FileHandler#檔案模式 level=DEBUG formatter=form01 args=('e:\\AutoTestLog.log'
,'a')#儲存的位置 [handler_hand03]#回滾日誌 class=handlers.RotatingFileHandler level=INFO formatter=form01 args=('e:\\AutoTestLog.log','a',10*1024*1024,5) ############################################### [formatters] keys=form01,form02 [formatter_form01] format=%(asctime)s%(filename)s[line:%(lineno)d]%(levelname)s%(message)s datefmt=%Y-%m-%d%H:%M:%S [formatter_form02] format=%(name)-12s:%(levelname)-8s%(message)s datefmt=%Y-%m-%d%H:%M:%S # asctime:時間 filename:列印日誌的檔名 lineno:行號 levelname:日誌級別 message:具體你列印的日誌訊息#注 上面的文字是我做的註釋,需要執行時需要去除他們 

二:引用封裝的日誌檔案Log.py

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 #encoding=utf-8 importlogging.config importlogging logging.config.fileConfig("Logger.conf") logger=logging.getLogger("example01") #日誌配置檔案:多個logger,每個logger,指定不同的handler #handler:設定了日誌輸出行的格式 #handler:以及設定寫日誌到檔案(是否回滾)?還是到螢幕 #handler:還定了列印日誌的級別。 defdebug(message): # 列印debug級別的日誌方法 logger.debug(message) defwarning(message): # 列印warning級別的日誌方法 logger.warning(message) definfo(message): # 列印info級別的日誌方法 logger.info(message) deferror(message): # 列印error級別的日誌方法 logger.error(message) if__name__=="__main__": debug("hi") info("info hi ") warning("warning hello") error("error hello")

3.selenium中使用

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 #encoding=utf-8 fromseleniumimportwebdriver importunittest importlogging # 從當前檔案所在目錄中匯入Log.py檔案中所有內容 fromlogdemo.Logimport* classTestSoGouByObjectMap(unittest.TestCase): defsetUp(self): # 啟動瀏覽器 self.driver=webdriver.Chrome(executable_path="D:\\driver\\chromedriver") deftestSoGouSearch(self): debug(u"============== 搜尋 ==============") url="http://www.baidu.com" self.driver.get(url) debug(u"訪問sogou首頁") self.driver.find_element_by_id("kw").send_keys(u"肺炎 ") warning(u"在輸入框中輸入搜尋關鍵字串“肺炎”"+self.driver.find_element_by_id("kw").get_attribute("value")) self.driver.find_element_by_id("su").click() info(u"點選搜尋按鈕") debug(u"========== 測試用例執行結束 ==========") deftearDown(self): # 退出IE瀏覽器 self.driver.quit() if__name__=='__main__': unittest.main()