day22 20200509 日誌封裝 分層設計

2022-08-15 22:30:24 字數 4626 閱讀 7910

思路:

1、輸入引數是什麼?--logging模組中最基礎的物件,用logging.getlogger(name)方法進行初始化,name可以不填。通常logger的名字我們對應模組名,如聊天模組、資料庫模組、驗證模組等

2、需要返回的是什麼?

-- 返回乙個log記錄物件,

這個物件已經建立了logger物件,日誌等級,輸出渠道,樣式,輸出渠道等,注意日誌等級、

呼叫的時候 

do_log.error(f"

:具體異常為

")

封裝**:

import

logging

from handle_yaml import

do_yaml

class

handlelog:

def__init__(self, name=none):

#1、建立logger物件

#相當於日誌記錄工具

if name is

none:

self.my_logger = logging.getlogger("

testcase")

else

: self.my_logger =logging.getlogger(name)

#2、設定日誌器的日誌等級

#self.my_logger.setlevel("debug")

self.my_logger.setlevel(do_yaml.get_data("

log", "

logger_level"))

#3、建立日誌輸出渠道(日誌顯示的地方)

console_handler =logging.streamhandler()

console_handler.setlevel(

"warning")

#file_handler = logging.filehandler("testcase.log", encoding="utf-8")

file_handler = logging.filehandler(do_yaml.get_data("

log", "

log_filename

"), encoding="

utf-8")

#4、建立日誌的顯示樣式(格式)並與渠道進行關聯

formater = logging.formatter('

%(asctime)s - [%(levelname)s] - [msg]: %(message)s - %(name)s - %(lineno)d')

console_handler.setformatter(formater)

file_handler.setformatter(formater)

#5、日誌器物件與日誌輸出渠道(展示的地方)進行關聯

self.my_logger.addhandler(console_handler)

self.my_logger.addhandler(file_handler)

defget_logger(self):

return

self.my_logger

do_log =handlelog().get_logger()

if__name__ == '

__main__':

do_log =handlelog()

my_logger =do_log.get_logger()

my_logger.debug(

"這是一條debug級別的日誌!")

my_logger.info(

"這是一條info級別的日誌!")

my_logger.warning(

"這是一條warning級別的日誌!")

my_logger.error(

"這是一條error級別的日誌!")

my_logger.critical(

"這是一條critical級別的日誌!

")

分層設計-目錄分級:

資料層(data):用例資料(excel)

配置層(confs):儲存配置資訊(.conf、.yaml)

用例層(cases):用於儲存測試類模組

第三方庫層(libs):來儲存第三方模組,ddt

日誌層(logs):存放日誌檔案

指令碼層(scripts):存放各種模組的封裝類

報告層(reports):存放測試報告

入口:介面自動化框架的入口模組

分層設計,特別關注os模組,獲取路徑

importos#

os.path.abspath(__file__) - 當前檔案所在的絕對路徑

#os.path.dirname(os.path.abspath(__file__)) -- 當前檔案所在的目錄

#os.path.dirname(os.path.dirname(os.path.abspath(__file__))) -- 資料夾所在的目錄

base_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__

)))#

獲取cases的目錄

cases_path = os.path.join(base_dir, "

cases

")

引用這個封裝的path

importos#

剛封裝的path

from scripts.handle_path import

cases_path

#之後,從配置檔案中讀取excel配置的選項值,和之前配置的路徑進行拼接

excel_path = os.path.join(cases_path, do_yaml.get_data("

excel

", "

filename"))

do_excel = handleexcel(excel_path, "

register

")

pymysql操作步驟:

1、建立連線物件

2、建立游標

3、執行sql

4、提交sql

5、關閉游標

6、關閉連線

建議sql不要用f「」進行拼接,因為容易發生安全事故,比如說sql注入 1 or 1=1

建議使用:sql3 = 'select * from member where mobile_phone = %s;'

import

pymysql

#1、建立連線物件

conn = pymysql.connect(host="

api.lemonban.com",

user="

future",

password="

123456",

port=3306,

database="

futureloan",

charset="

utf8

", #

不能為utf-8

#a.指定每一條記錄為字典型別

#b.預設每一條記錄為元祖型別

cursorclass=pymysql.cursors.dictcursor

)#2、建立游標物件

one_cursor =conn.cursor()

#3、執行sql語句

#a.sql語句固定死了

#sql1 = 'select * from member where mobile_phone = "13734076707";'

#sql2 = 'select * from member order by id desc limit 0,5;'

one_mobile = input("

請輸入您的手機號!")

#sql3 = f'select * from member where mobile_phone = ;'

#b.給sql語句新增引數,%s為佔位符

sql3 = '

select * from member where mobile_phone = %s;'#

one_cursor.execute(sql1)

#one_cursor.execute(sql2)

#one_cursor.execute(sql3)

#c.執行sql語句時,給sql語句傳遞引數,args為序列型別,引數與sql語句中的%s,一一對應

one_cursor.execute(sql3, args=[one_mobile])

#4、獲取值並提交

#fetchone獲取一條資料,如果游標類為dictcursor,則結果為字典型別

#fetchall獲取多條資料,如果游標類為dictcursor,則結果為巢狀字典的列表型別

result =one_cursor.fetchone()

#result = one_cursor.fetchall()

#提交結果

conn.commit()

#5、關閉連線

#a.必須先關游標

#b.再關連線

one_cursor.close()

conn.close()

Day7 日誌檔案

學習筆記 一 日誌檔案 rsyslogd 主要記錄系統與網路等服務的資訊 klogd 主要記錄核心產生的各種資訊 logrotate 主要進行日誌檔案的輪替功能 二 rsyslogd的功能 1.日誌內容的一般格式 2.配置檔案位址 etc rsyslog.conf 3.資訊等級 1.info 2.n...

day10 日誌切換

select from v log create table haha as select from all objects insert into haha select from haha commit delete from haha select from v log alter syste...

2007 09 22 日誌 轉折日

最近太忙了,忙到真的連看自己blog的時間都沒有了 更別提更新了 看著各種排名的全線飄綠 慘不忍睹,我的那個心啊,哇涼哇涼的啊 不過,忙碌的工作收穫也是巨大的 我們的團隊取得了驕人的成績!在此,我對團隊的每個成員表示衷心的感謝。我相信,中國的外包史上將銘刻這幾位同事的名字,他們是 成績歸成績,缺點也...