思路:
1、輸入引數是什麼?--logging模組中最基礎的物件,用logging.getlogger(name)方法進行初始化,name可以不填。通常logger的名字我們對應模組名,如聊天模組、資料庫模組、驗證模組等
2、需要返回的是什麼?
-- 返回乙個log記錄物件,
這個物件已經建立了logger物件,日誌等級,輸出渠道,樣式,輸出渠道等,注意日誌等級、
呼叫的時候
do_log.error(f":具體異常為
")
封裝**:
importlogging
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;'
importpymysql
#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的時間都沒有了 更別提更新了 看著各種排名的全線飄綠 慘不忍睹,我的那個心啊,哇涼哇涼的啊 不過,忙碌的工作收穫也是巨大的 我們的團隊取得了驕人的成績!在此,我對團隊的每個成員表示衷心的感謝。我相信,中國的外包史上將銘刻這幾位同事的名字,他們是 成績歸成績,缺點也...