python日誌模塊的使用
阿新 • • 發佈:2019-03-01
info span dirname import ram class Matter 函數 formatter
https://www.cnblogs.com/yyds/p/6901864.html
https://www.cnblogs.com/goodhacker/p/3355660.html
https://cuiqingcai.com/6080.html
實踐:把日誌模塊加到requests+excel接口測試框架中
新建一個logs文件夾,用來存放輸出的日誌文件;然後在utils工具中創建一個logger.py,封裝日誌調用方法
logger.py的內容如下
# -*- coding:utf-8 -*- import logging import os from utils import getcwd log_path = os.path.dirname(getcwd.get_cwd()) print(log_path) class Logger: def __init__(self,loggername): #創建一個logger self.logger = logging.getLogger(loggername) self.logger.setLevel(logging.DEBUG) #創建一個handler,用於寫入日誌文件 log_path = os.path.dirname(getcwd.get_cwd())+"/logs/" # 指定文件輸出路徑,註意logs是個文件夾,一定要加上/,不然會導致輸出路徑錯誤,把logs變成文件名的一部分了 logname = log_path + ‘out.log‘ #指定輸出的日誌文件名 fh = logging.FileHandler(logname,encoding = ‘utf-8‘) # 指定utf-8格式編碼,避免輸出的日誌文本亂碼 fh.setLevel(logging.DEBUG) #創建一個handler,用於將日誌輸出到控制臺 ch = logging.StreamHandler() ch.setLevel(logging.DEBUG) # 定義handler的輸出格式 formatter = logging.Formatter(‘%(asctime)s-%(name)s-%(levelname)s-%(message)s‘) fh.setFormatter(formatter) ch.setFormatter(formatter) # 給logger添加handler self.logger.addHandler(fh) self.logger.addHandler(ch) def get_log(self):"""定義一個函數,回調logger實例""" return self.logger if __name__ == ‘__main__‘: t = Logger("hmk").get_log().debug("User %s is loging" % ‘jeck‘)
在主函數run_main.py中使用日誌
# coding: utf-8 # author: hmk from base.main import RunMethod from get_datas.get_data import GetData from utils.handle_excel import HandleExcel import json from utils.logger import Logger class RunMain: def __init__(self): """實例化寫好的類,備用""" self.run_method = RunMethod() self.get_data = GetData() self.excel = HandleExcel() self.logger = Logger(__name__) def run(self): count = self.get_data.get_nrows() # print(count) for i in range(1, count): priority = self.get_data.get_priority(i) # 獲取用例的優先級priority url = self.get_data.get_url(i) # 獲取用例的url method = self.get_data.get_method(i) # 獲取請求方法 params = self.get_data.get_params(i) # 獲取參數(此處取出來的數據是字符串格式) params_load = json.loads(params) # 將獲取到的參數反序列化,即轉化為字典 except_value = self.get_data.get_except_value(i) # 獲取預期結果值 if priority == ‘H‘: r = self.run_method.run_main(method, url, params_load, header=None) # 如果是高優先級用例,則執行 # print(r) self.logger.get_log().debug(‘第‘+str(i)+‘個接口的返回結果為:%s‘,r) # 輸出接口響應內容# print(type(r)) if except_value in r: # print(self.get_data.get_caseSeq(i) + ‘測試通過‘) self.logger.get_log().debug(‘第‘ + str(i) + ‘接口測試通過‘) # self.get_data.write_values(i, ‘PASS‘) # 調用get_data.py文件中的write_values()方法 self.excel.write_value(i, 11, ‘pass‘) # 調用handle_excel.py文件中的write_value()方法 else: # print(self.get_data.get_caseSeq(i) + ‘執行失敗‘) self.logger.get_log().debug(‘第‘ + str(i) + ‘接口測試不通過‘)# self.get_data.write_values(i, ‘FAIL‘) self.excel.write_value(i, 11, ‘fail‘) if __name__ == ‘__main__‘: t = RunMain() t.run()
打印出的日誌內容
這樣就可以替代用print來查看代碼運行的輸出內容了
python日誌模塊的使用