Files
smart-management-auto-test/base_framework/public_tools/read_config.py
qiaoxinjiu 6994b185a3 addproject
2026-01-22 19:10:37 +08:00

197 lines
6.8 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# coding=utf-8
import configparser
import os
import codecs
from base_framework.base_config.current_pth import *
from base_framework.public_tools import log
obj_log = log.get_logger()
class ReadConfig:
"""
专门读取配置文件的,.ini文件格式
"""
def __init__(self, filename=config_file_path):
self.config_path = filename
fd = open(self.config_path, encoding='utf-8')
data = fd.read()
if data[:3] == codecs.BOM_UTF8:
data = data[3:]
files = codecs.open(self.config_path, "w")
files.write(data)
files.close()
fd.close()
self.cf = configparser.SafeConfigParser(allow_no_value=True)
self.cf.read(self.config_path, encoding='utf-8')
def get_value(self, sections, options):
"""
获取config文件数据
"""
return self.cf.get(sections, options)
def read_cfg(self):
"""
读取配置文件路径
"""
return self.cf.read(filenames=self.config_path, encoding='utf-8')
def get_sections(self):
"""
读取配置文件中所有的section可以理解为组名)
"""
return self.cf.sections()
def get_options(self, section):
"""
读取该section下所有的option可以理解成读取该组下的所有key
"""
return self.cf.options(section)
def get_items(self, section):
"""
读取该section下的所有值并以键值对形式输出
"""
return self.cf.items(section)
def add_section(self, section):
"""
添加一个section参数为section的名称
"""
self.cf.add_section(section)
with open(self.config_path, 'w') as fw: # 循环写入
self.cf.write(fw)
def set_section(self, section, option, value):
"""
在section下面添加一条数据key=value需要调用write()将内容写入文件
"""
self.cf.set(section, option, value)
with open(self.config_path, 'w') as fw: # 循环写入
self.cf.write(fw)
def get_all_cfg(self, section=None):
all_config = {}
for key in self.get_sections():
all_values = {}
for value_key in self.get_options(key):
all_values[value_key] = self.get_value(key, value_key)
all_config[key] = all_values
if section:
if section in all_config:
return all_config[section]
else:
raise Exception("配置节点:{}在文件中不存在,请检查....".format(section))
else:
return all_config
def get_current_config(file_path=env_choose_path, section=None, key=None):
"""
功能读取env_choose.ini中的配置并返回
"""
rd = ReadConfig(file_path)
if key in rd.get_options(section=section):
return rd.get_value(sections=section, options=key)
else:
return "server not exist"
def get_zhyy_config(file_path=config_choose_path, section=None, key=None):
"""
功能读取env_choose.ini中的配置并返回
"""
rd = ReadConfig(file_path)
if key in rd.get_options(section=section):
return rd.get_value(sections=section, options=key)
else:
return "server not exist"
def get_current_env():
"""
功能读取env_choose.ini中的当前环境配置并返回
"""
rd = ReadConfig(env_choose_path)
env = rd.get_value(sections="run_jira_id", options="huohua-podenv")
if not env:
env = rd.get_value(sections="run_evn_name", options="current_evn")
return env
def get_uat_config(website, page, key=None, section='page_element'):
"""
| 功能说明: | 从uat_config文件夹下的对应文件中读取key |
| 输入参数: | website | 站点名public_business/uat/uat_config目录下的文件名 |
| | page | web页面名称website文件夹下的文件名不用.ini的文件后缀名 |
| | section | 配置文件中的节点名,默认读取页面元素 |
| | key | 配置文件中的key如果不输入将以当前构建环境为key如qasim |
| 作者信息: | 吴勇刚 | 2022.06.22 |
"""
config_path = os.path.join(uat_config_path, website, "{}.ini".format(page))
if not key:
key = get_current_config(section="run_evn_name", key="current_evn").lower()
rd = ReadConfig(config_path)
return rd.get_value(sections=section, options=key)
class InitConfig:
def __init__(self, run_user_name=None, current_evn=None):
self.cfg_rtn = ReadConfig()
self.evn_rtn = ReadConfig(env_choose_path)
self.db_rtn = ReadConfig(db_config_path)
self.config_rtn = ReadConfig(config_choose_path)
self.all_cfg = self.cfg_rtn.get_all_cfg()
self.config_cfg = self.config_rtn.get_all_cfg()
self.evn_cfg = self.evn_rtn.get_all_cfg()
self.db_cfg = self.db_rtn.get_all_cfg()
try:
self.astwb_cfg = ReadConfig(astwb_config)
self.astwb_all_cfg = self.astwb_cfg.get_all_cfg()
# 合并配置文件
self.all_cfg.update(self.astwb_all_cfg)
except Exception as e:
pass
if current_evn is None:
self.current_evn = self.evn_cfg['run_evn_name']['current_evn'] if self.evn_cfg['run_evn_name'][
'current_evn'] != '' else 'QA'
else:
self.current_evn = current_evn
if run_user_name:
self.current_user = run_user_name
else:
self.current_user = self.evn_cfg['run_user_name']['default_user']
self.zhyy_host = self.get_current_env_info(self.config_cfg, self.current_evn, 'zhyy_login')
def get_current_env_info(self, cfg_obj, current_env, key):
"""
config.ini中环境处理专用
:param cfg_obj: self.cfg_rtn = ReadConfig() self.all_cfg = self.cfg_rtn.get_all_cfg() cfg_obj = self.all_cfg
:param current_env: QA SIM PRODUCT
:param key: options
:return:
"""
try:
value = cfg_obj[current_env][key]
except KeyError:
value = cfg_obj['QA'][key]
if current_env == 'SIM':
value = value.replace('.qa.', '.sim.')
return value
elif current_env == 'PRODUCT':
value = value.replace('.qa.', '.')
return value
return value
if __name__ == '__main__':
pass
# init_cfg = InitConfig(curt_evn='QA', curt_user='lrq')
print(ReadConfig().add_section(section='temp_teacher'))
print(ReadConfig().set_section(section='temp_teacher', option='show_username', value=11))