python接口自動化測試 - configparser配置文件解析器詳細使用


configparser簡介

  • ConfigParser模塊已在Python 3中重命名為configparser
  • 該模塊定義了ConfigParser類。 ConfigParser類實現一種基本的配置文件解析器語言,該語言提供的結構類似於 .ini 文件中的結構

 

ini文件相關知識

  • 鍵值對可用 = 或者 : 進行分隔
  •  section 的名字是區分大小寫的,而 option 的名字是不區分大小寫的
  • 鍵值對中頭部和尾部的空白符會被去掉
  • 值可以為多行
  • 配置文件可以包含注釋,注釋以 # 或者 ; 為前綴

ini文件示例

[server]    
age = 45
username = yes

# server就是section
# age、username就是option

 

操作ini文件

認准三部曲

  1. 實例化ConfigParser類
  2. 讀取配置文件
  3. 操作配置文件

 

基礎代碼

 1     import configparser
 2 
 3     filename = 'F:/Interface/config/server.ini'
 4     # 實例化configparser
 5     config = configparser.ConfigParser()
 6 
 7     # 讀取配置文件
 8     config.read(filename, encoding="utf-8-sig")
 9 
10     # 獲取某個option的值(最常見的操作)
11     config.get(section="server", option="username")

 

包含知識點

  • 當你配置文件有中文時,在調用 read() 方法時,需要傳  encoding="utf-8-sig" 參數
  • 最常見的操作就是 get(section,option,fallback="默認值") ,獲取某個option的值,當然也可以傳個 fallback ,當你的option不存在的時候,就會返回fallback的值

 

configparser封裝類

為了更好的復用configparser,我們將常用的方法寫成一個封裝類

 1 #!/usr/bin/env python
 2 # -*- coding: utf-8 -*-
 3 
 4 """
 5 __title__  = 操作配置文件工具類
 6 """
 7 
 8 import configparser
 9 
10 
11 class ConfigUtil:
12     # 實例化configparser
13     config = configparser.ConfigParser()
14 
15     def read(self, filename):
16         """
17         讀取配置文件
18         :param filename: 配置文件路徑
19         """
20         self.config.read(filename, encoding="utf-8-sig")
21 
22     def get(self, _options, _section='server'):
23         """
24         獲取某個options值
25         :param _options: option
26         :param _section: section
27         """
28         try:
29             # 方式一:調用方法
30             value = self.config.get(section=_section, option=_options, fallback="默認值,key不存在則返回此值")
31 
32             # 方式二:索引
33             value = self.config[_section][_options]
34         except Exception as e:
35             print("沒有獲取到值")
36             value = None
37         return value
38 
39     def get_options_key_value(self, _section):
40         """
41         以列表(name,value)的形式返回section中的每個值
42         :param _section: 某個section
43         :return: list[tuple(key,value)]
44         """
45         return self.config.items(_section)
46 
47     def get_all_section(self):
48         """
49         獲取所有section
50         """
51         return self.config.sections()
52 
53     def get_options_by_section(self, _section):
54         """
55         獲取section下所有可用options
56         """
57         # 方式一
58         keys = []
59         for _options in self.config[_section]:
60             keys.append(_options)
61 
62         # 方式二(推薦)
63         keys = self.config.options(_section)
64         return keys
65 
66     def assert_section_in_config(self, _section):
67         """
68         判斷section是否存在
69         :param _section: 需要判斷的section
70         """
71         return _section in self.config
72 
73     def assert_options_in_section(self, _section, _options):
74         """
75         判斷options是否存在某個section中
76         :param _section: 某個section
77         :param _options: 需要判斷的options的key值
78         """
79         return _options in self.config[_section]
80 
81 
82 configUtil = ConfigUtil()
83 
84 if __name__ == '__main__':
85     filename = 'F:/imocInterface/config/server.ini'
86     configUtil.read(filename)
87     print(configUtil.get("username"))
88     print(configUtil.get_all_section())
89     print(configUtil.assert_section_in_config("server"))
90     print(configUtil.get_options_by_section("server"))
91     print(configUtil.assert_options_in_section("server", "usernsame"))
92     print(configUtil.get_options_key_value("server"))

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM