python封裝logging日誌模組,與selenium連用
阿新 • • 發佈:2020-09-23
推薦一篇博主部落格: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
import logging.config
import logging
logging.config.fileConfig( "Logger.conf" )
logger = logging.getLogger( "example01" )
#日誌配置檔案:多個logger,每個logger,指定不同的handler
#handler:設定了日誌輸出行的格式
#handler:以及設定寫日誌到檔案(是否回滾)?還是到螢幕
#handler:還定了列印日誌的級別。
def debug(message):
# 列印debug級別的日誌方法
logger.debug(message)
def warning(message):
# 列印warning級別的日誌方法
logger.warning(message)
def info(message):
# 列印info級別的日誌方法
logger.info(message)
def error(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
from selenium import webdriver
import unittest
import logging
# 從當前檔案所在目錄中匯入Log.py檔案中所有內容
from logdemo.Log import *
class TestSoGouByObjectMap(unittest.TestCase):
def setUp( self ):
# 啟動瀏覽器
self .driver = webdriver.Chrome(executable_path = "D:\\driver\\chromedriver" )
def testSoGouSearch( 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 "========== 測試用例執行結束 ==========" )
def tearDown( self ):
# 退出IE瀏覽器
self .driver.quit()
if __name__ = = '__main__' :
unittest.main()
|