1. 程式人生 > 實用技巧 >UI自動化框架搭建(六): 工具類解析

UI自動化框架搭建(六): 工具類解析

主要講下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())