UI自動化框架搭建(六): 工具類解析
阿新 • • 發佈:2020-12-17
主要講下3個工具
一、日誌類工具
功能:自動化執行列印日誌
日誌級別 setLevel(logging.DEBUG或INFO ERROR),一般為INFO
生成檔案命名格式 datetime.now().strftime("%Y-%m-%d"),如果是按時分秒,()可以加%H%M%S
其他按預設即可
# -*- coding:utf-8 -*- import logging from datetime import datetime import os class LogUtil(): def __init__(self, logname=None):# 日誌名稱 self.logger = logging.getLogger(logname) # 日誌級別 self.logger.setLevel(logging.DEBUG) # 日誌輸出到控制檯 self.console = logging.StreamHandler() self.console.setLevel(logging.DEBUG) # 輸出到檔案 self.date = datetime.now().strftime("%Y-%m-%d") + '.log' self.filename = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), 'logs', self.date) self.file = logging.FileHandler(self.filename, encoding='utf-8') self.file.setLevel(logging.DEBUG) # 日誌顯示內容 self.formatstr = '%(asctime)s %(filename)s [line:%(lineno)d] %(levelname)s %(message)s' self.format = logging.Formatter(self.formatstr) self.console.setFormatter(self.format) self.file.setFormatter(self.format) # 加入到hander self.logger.addHandler(self.console) self.logger.addHandler(self.file) def get_logger(self): return self.logger
二、資料庫操作類
目前支援mysql和oracle的資料操作
由於mysql和oracle的增刪查改操作方法一致,所以方法統一放置在DataBase類裡了
但遊標conn獲取方式不一致,通過OracleDataBase和MysqlDataBase類區別獲取
# -*- coding:utf-8 -*- from utils.log_util import LogUtil from utils.yaml_util import YamlUtil import pymysql import cx_Oracle logger = LogUtil('database_util').getLogger() class DataBase(object): def __init__(self): pass def queryDataBase(self, querySql): # 獲取遊標 try: cursor = self.con.cursor() cursor.execute(querySql) return cursor.fetchone()[0] except Exception as e: logger.error(e) finally: self.con.close() def updateData(self, querySql): # 修改資料庫資料 try: cursor = self.con.cursor() cursor.execute(querySql) self.con.commit() except Exception as e: self.con.rollback() logger.error(e) finally: self.con.close() class OracleDataBase(DataBase): def __init__(self): sysConfig = YamlUtil('sysconfig.yaml').readYaml() host = sysConfig['mysqlConfig']['host'] port = sysConfig['mysqlConfig']['port'] user = sysConfig['mysqlConfig']['username'] pwd = sysConfig['mysqlConfig']['password'] database = sysConfig['mysqlConfig']['database'] self.con = cx_Oracle.connect("{}/{}@{}:{}/{}".format(user, pwd, host, port, \ database).format(), encoding="UTF-8", nencoding="UTF-8") class MysqlDataBase(DataBase): def __init__(self): sysConfig = YamlUtil('sysconfig.yaml').readYaml() host = sysConfig['mysqlConfig']['host'] port = sysConfig['mysqlConfig']['port'] user = sysConfig['mysqlConfig']['username'] pwd = sysConfig['mysqlConfig']['password'] database = sysConfig['mysqlConfig']['database'] self.con = pymysql.Connect( host=host, port=port, user=user, passwd=pwd, db=database, charset='utf8' ) if __name__ == "__main__": pass
三、時間操作類
按格式獲得時間,目前支援年月日時分秒 以及 年-月-日返回
可自行擴充套件
# -*- coding:utf-8 -*- from datetime import datetime class DateTimeUtil(object): def __init__(self): pass def get_current_time(self): return datetime.now().strftime("%Y%m%d%H%M%S") def get_current_date(self): return datetime.now().strftime("%Y-%m-%d") if __name__=="__main__": dateTime = DateTimeUtil() print(dateTime.get_current_time())