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

发表于:2022-3-08 09:20

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:全栈测试开发日记    来源:CSDN

  引言
  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\release]
      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
    
  总结
  方法基本上就是这样,具体根据自己业务需要进行设计。

  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号