zoukankan      html  css  js  c++  java
  • 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['oralceConfig']['host']
            port = sysConfig['oralceConfig']['port']
            user = sysConfig['oralceConfig']['username']
            pwd = sysConfig['oralceConfig']['password']
            database = sysConfig['oralceConfig']['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())
  • 相关阅读:
    通过HTTP请求Websocket
    理解C#中的“静态”
    C#垃圾回收机制详解
    详说C#中的结构struct
    readonly和const区别
    深入理解C#中this/partial/null的使用
    面向对象的几个基本概念的理解
    C#中out和ref使用
    C#中params使用
    值类型引用类型详解
  • 原文地址:https://www.cnblogs.com/heng-xin/p/14149401.html
Copyright © 2011-2022 走看看