• Python基础之读取基础配置模块封装


      引言

      python读取配置文件中的数据在前面的Python 读取配置文件常用几种方式文章中已经介绍,这里主要介绍对.ini文件的常用封装方法以及使用。

      设计思路

      废话也不多说,画个操作,代码流。

      代码实现

    __author__ = 'Leo'
    
    
    from configparser import ConfigParser
    import os
    from common import Log
    
    
    class Config(object):
        """
        配置文件
        """
        """
        :常量设置
        :读取ini
        """
        # titles:
        TITLE_TEST = 'test'
        TITLE_RELEASE = 'online_release'
        TITLE_EMAIL = 'mail'
    
        # values:
        # [test
    elease]
        VALUE_TESTER = 'tester'
        VALUE_ENVIRONMENT = 'environment'
        VALUE_VERSION_CODE = 'versionCode'
        VALUE_HOST = 'host'
        VALUE_PATH = 'path'
        VALUE_DATA = 'data'
    
        # [mail]
        VALUE_SMTP_SERVER = 'smtpserver'
        VALUE_SENDER = 'sender'
        VALUE_RECEIVER = 'receiver'
        VALUE_USERNAME = 'username'
        VALUE_PASSWORD = 'password'
    
        # 获取当前文件所在的根目录
        path_root = str(os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir)))
    
        def __init__(self):
            """
            初始化
            """
            self.config = ConfigParser()
            self.logger = Log.MyLog()
            self.conf_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'config.ini')
    
            if not os.path.exists(self.conf_path):
                raise FileNotFoundError("配置文件不存在!")
    
            # 读取配置文件
            self.config.read(self.conf_path,encoding='utf8')
    
    
    
    
            # 测试环境配置
            self.tester_test = self.get_conf(Config.TITLE_TEST,Config.VALUE_TESTER)
            self.environment_test = self.get_conf(Config.TITLE_TEST,Config.VALUE_ENVIRONMENT)
            self.versionCode_test = self.get_conf(Config.TITLE_TEST,Config.VALUE_VERSION_CODE)
            self.host_test = self.get_conf(Config.TITLE_TEST,Config.VALUE_HOST)
            self.path_test = self.get_conf(Config.TITLE_TEST,Config.VALUE_PATH)
            self.data_test = self.get_conf(Config.TITLE_TEST,Config.VALUE_DATA)
    
    
            # 邮件配置
            self.smtpserver = self.get_conf(Config.TITLE_EMAIL,Config.VALUE_SMTP_SERVER)
            self.sender = self.get_conf(Config.TITLE_EMAIL,Config.VALUE_SENDER)
            self.receiver = self.get_conf(Config.TITLE_EMAIL,Config.VALUE_RECEIVER)
            self.username = self.get_conf(Config.TITLE_EMAIL,Config.VALUE_USERNAME)
            self.password = self.get_conf(Config.TITLE_EMAIL,Config.VALUE_PASSWORD)
    
    
        def get_conf(self, title, value):
            """
            配置文件读取
            :param title:
            :param value:
            :return:
            """
            return self.config.get(title, value)
    
        def set_conf(self, title, value, text):
            """
            配置文件修改
            :param title:
            :param value:
            :param text:
            :return:
            """
            self.config.set(title, value, text)
            with open(self.conf_path, "w+") as f:
                return self.config.write(f)
    
        def add_conf(self, title):
            """
            配置文件添加
            :param title:
            :return:
            """
            self.config.add_section(title)
            with open(self.conf_path, "w+") as f:
                return self.config.write(f)
    
    
    if __name__ == '__main__':
        print(Config().tester_test)
        print(Config().environment_test)
        print(Config().versionCode_test)
        print(Config().host_test)
        print(Config().data_test)
        print(Config().path_test)
    

      

      ini配置文件信息

    ; 接口测试框架配置文件
    
    ; titles
    [test]
    # test配置
    tester = 全栈测试开发日记
    environment = test
    versionCode = v1.0
    host = www.***.com
    path = /
    data = {'a':1,'b':2}
    
    [mail]
    #发送邮件信息
    smtpserver = smtp.163.com
    sender = test1@163.com
    receiver = test2@163.com
    username = test1@163.com
    password = 12345678
    

      文件结构:

      运行结果

    全栈测试开发日记
    test
    v1.0
    www.***.com
    {'a':1,'b':2}
    /
    
    Process finished with exit code 0
    

      

      总结

      方法基本上就是这样,具体根据自己业务需要进行设计。

      另外,对测试开发,自动化测试,全栈测试相关技术感兴趣的朋友,可以加入到群里学习和探索交流,进群方式,扫下方二维码。

  • 相关阅读:
    hdu 1715
    hdu 1370
    hdu 2370
    hdu 1393
    hdu 1564
    hdu 1720
    hdu 1342
    SQL技巧(sp_procedure_params_rowset,SQL中设置数据值为null)
    Control ‘dg’ of type 'GridView' must be placed inside a form tag with runat=server
    GridView事件中获取rowIndex值
  • 原文地址:https://www.cnblogs.com/liudinglong/p/12946974.html
Copyright © 2020-2023  润新知