1. 程式人生 > >Selenium2+python自動化72-logging日誌使用【轉載】

Selenium2+python自動化72-logging日誌使用【轉載】

click orm 輸入 報告 日誌輸出 分享 -type init epg

前言

腳本運行的時候,有時候不知道用例的執行情況,這時候可以加入日誌,這樣出現問題後方便查閱,也容易排查哪些用例執行了,哪些沒有執行。

一、封裝logging模塊

1.關於logging日誌的介紹,我這裏就不詳細講解了,主要有兩大功能,一個是控制臺的輸出,一個是保存到本地文件

2.先封裝logging模塊,保存到common文件夾命名為logger.py,以便於調用

# coding:utf-8
import logging,time,os
# 這個是日誌保存本地的路徑
log_path = "D:\\test\\newp\\report"
class Log:
def __init__(self):
# 文件的命名
self.logname = os.path.join(log_path, ‘%s.log‘%time.strftime(‘%Y_%m_%d‘))
self.logger = logging.getLogger()
self.logger.setLevel(logging.DEBUG)
# 日誌輸出格式
self.formatter = logging.Formatter(‘[%(asctime)s] - %(filename)s[line:%(lineno)d] - fuc:%(funcName)s- %(levelname)s: %(message)s‘)
def __console(self, level, message):
# 創建一個FileHandler,用於寫到本地
fh = logging.FileHandler(self.logname, ‘a‘) # 追加模式
fh.setLevel(logging.DEBUG)
fh.setFormatter(self.formatter)
self.logger.addHandler(fh)

# 創建一個StreamHandler,用於輸出到控制臺
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)
ch.setFormatter(self.formatter)
self.logger.addHandler(ch)

if level == ‘info‘:
self.logger.info(message)
elif level == ‘debug‘:
self.logger.debug(message)
elif level == ‘warning‘:
self.logger.warning(message)
elif level == ‘error‘:
self.logger.error(message)
# 這兩行代碼是為了避免日誌輸出重復問題
self.logger.removeHandler(ch)
self.logger.removeHandler(fh)
# 關閉打開的文件
fh.close()

def debug(self, message):
self.__console(‘debug‘, message)

def info(self, message):
self.__console(‘info‘, message)

def warning(self, message):
self.__console(‘warning‘, message)

def error(self, message):
self.__console(‘error‘, message)

if __name__ == "__main__":
log = Log()
log.info("---測試開始----")
log.info("輸入密碼")
log.warning("----測試結束----")

二、log保存本地

1.logger模塊的封裝在9.2章節,我的用例參考目錄如下

2.先設置保存log到本地的文件路徑地址,如:log_path = "D:\\test\\newp\\report"

技術分享

三、用例代碼

以下是簡單的一個百度的搜索案例僅供參考

# coding:utf-8

import unittest,time

from common.logger import Log

from selenium import webdriver

log = Log()

class Test(unittest.TestCase):

def setUp(self):

self.driver = webdriver.Firefox()

self.driver.get("https://www.baidu.com")

self.driver.implicitly_wait(30)

def test_01(self):

log.info("-------測試用例開始---------")

self.driver.find_element_by_id("kw").send_keys("yoyo")

log.info("輸入內容:yoyo")

self.driver.find_element_by_id("su").click()

log.info("點擊按鈕:id = su")

time.sleep(2)

t = self.driver.title

log.info(u"獲取title內容:%s"%t)

self.assertIn(u"百度搜索",t)

def tearDown(self):

self.driver.quit()

log.info("-------測試用例結束----------")

if __name__ == "__main__":

unittest.main()

四、運行結果:

1.執行run_all腳本(3.9章節)

技術分享

2.打開存放日誌文件的目錄,找到log文件

技術分享

3.打開報告,看到的效果如下

技術分享

Selenium2+python自動化72-logging日誌使用【轉載】