Python 中 configparser 配置文件的讀寫及封裝,配置文件存放數據,方便修改

1. 將程序中不常變化的數據放在配置文件中,有什麼好處?python

將配置統一放在一塊兒,進行統一管理,方便維護,方便修改函數

  • 配置文件將存放測試數據好比:
    • Excel文件名、
    • 日誌名、
    • 用例執行的結果、
    • 實際結果和用例執行結果寫入到哪一行、
    • HTML報告的名稱、
    • 報告的標題、
    • 報告的詳細程度、
    • 報告的描述信息、
    • 測試人員的名字、
    • url的地址、
    • 登陸的帳號密碼

2. 結構測試

  • 配置文件名以 .conf、.ini 爲拓展名的文件叫作配置文件
  • 配置文件中使用英文 # ; 進行註釋,等號= 與冒號: 意思同樣
  • 區域名(區分大小寫)
  • 選項名 = 選項值
[file_path]
cases_path = cases.xlsx

3. 讀取配置文件基本操做url

# 讀取配置文件須要導入一個類:configparser (譯:康飛哥盤思)系統自帶不須要安裝
from configparser import ConfigParser

# 1.建立配置解析器
config = ConfigParser()

# 2.指定讀取的配置文件.read(譯:瑞德):指定讀取的文件名,文件名能夠是相對或絕對路徑
config.read("testcase.conf", encoding="utf-8")

# 3.讀取數據-------讀取的是哪一個區域下的那個選項名

# 方法一:使用方括號["區域名"]["選項名"]
one_value = config["file path"]["cases_path"]

# 方法二:使用.get("區域名", "選項名") -----推薦使用這個
two_value = config.get("msg", "success_result")

# 從配置文件中,使用方括號或者get讀取的全部值都是字符串類型


# 可使用getboolean方法獲取bool類型的數據
config.getboolean("msg", "va1")

# 可使用getboolean方法獲取bool類型的數據
# 一、yes、on、true、True ---> 都會讀取爲布爾類型True
# 0、no、off、false、False ---> 都會讀取爲布爾類型False

# 可使用getfloat方法獲取float類型的數據
config.getfloat("msg", "value2")

# 可使用getint方法獲取int類型的數據
config.getint("msg", "value1")

# 讀取列表
one_list = config.get('msg', 'value7')

# eval 函數可以將字符串轉換爲 python 中的內置類型
# 至關如把字符串的引號(單引號或者雙引號)去掉以後的類型
# 也可以執行字符串類表達式
one_list = eval(one_list)

4. 寫入配置文件基本操做spa

  ---不建議對已有文件進行寫入,會覆蓋掉源文件日誌

from configparser import ConfigParser

# 1.建立配置解析器
config = ConfigParser()

# 2.寫入配置的時候,不用使用read(read是讀)
# 構造要寫入的數據,嵌套字典的字典
datas = {
    "file path": {
        "cases_path": "cases1.xlsx",
        "log_path": "record_run_result.txt"
    },
    "msg1": {
        "success_result": "Pass",
        "fail_result": "Fail"
    }
}

# 讀取配置寫入----config['區域名']['選項名']
for key in datas:
    config[key] = datas[key]    # config相似於一個空字典

# 3.保存到文件 a = 追加
with open("write_config.ini", "w") as file:
    config.write(file)

5. 配置文件讀寫數據的封裝code

 

# 封裝配置文件
from configparser import ConfigParser


class HandleConfig:
    """
    配置文件讀寫數據的封裝
    """
    def __init__(self, filename):
        """
        :param filename: 配置文件名
        """
        self.filename = filename
        self.config = ConfigParser()        # 讀取配置文件1.建立配置解析器
        self.config.read(self.filename, encoding="utf-8")   # 讀取配置文件2.指定讀取的配置文件

    # get_value獲取全部的字符串,section區域名, option選項名
    def get_value(self, section, option):
        return self.config.get(section, option)

    # get_int獲取整型,section區域名, option選項名
    def get_int(self, section, option):
        return self.config.getint(section, option)

    # get_float獲取浮點數類型,section區域名, option選項名
    def get_float(self, section, option):
        return self.config.getfloat(section, option)

    # get_boolean獲取布爾類型,section區域名, option選項名
    def get_boolean(self, section, option):
        return self.config.getboolean(section, option)

    # get_eval_data獲取列表,section區域名, option選項名
    def get_eval_data(self, section, option):
        return eval(self.config.get(section, option))

    @staticmethod
    def write_config(datas, filename):
        """
        寫入配置操做
        :param datas: 須要傳入寫入的數據
        :param filename: 指定文件名
        :return:
        """
        # 作校驗,爲嵌套字典的字典才能夠(意思.隱私.談.ce)
        if isinstance(datas, dict):  # 在外層判斷是否爲字典
            # 再來判斷內層的 values 是否爲字典
            for value in datas.values():    # 先取出value
                if not isinstance(value, dict):     # 在判斷
                    return "數據不合法, 應爲嵌套字典的字典"

            config = ConfigParser()             # 1.建立配置解析器---與寫入配置操做一致
            for key in datas:                   # 寫入操做
                config[key] = datas[key]
            with open(filename, "w") as file:   # 保存到哪一個文件filename=須要指定文件名
                config.write(file)
            # return "寫入成功"


# do_config = HandleConfig('testcase.conf')

if __name__ == '__main__':
    # 讀取操做
    do_config1 = HandleConfig('testcase.conf')       # 讀取那個文件
    res = do_config1.get_value("msg", "success_result")  # 讀取什麼內容
    print(res)

    # 寫入操做
    do_config = HandleConfig('write_config.ini')
    datas = {
        "file path": {
            "cases_path": "cases.xlsx",
            "log_path": "record_run_result.txt"
        },
        "msg": {
            "success_result": "Pass",
            "fail_result": "Fail"
        }
    }
    do_config.write_config(datas, "write_config.ini")
    pass

 

 

*******請你們尊重原創,如要轉載,請註明出處:轉載自:https://www.cnblogs.com/shouhu/   謝謝!!******* blog

相關文章
相關標籤/搜索