configparser简介
- ConfigParser模块已在Python 3中重命名为configparser
- 该模块定义了ConfigParser类。 ConfigParser类实现一种基本的配置文件解析器语言,该语言提供的结构类似于 .ini 文件中的结构
Python自动化测试:手把手教你做60个实战项目,从入门到大师。
接口测试实战教程全套:零基础到精通、B站首推值得你收藏
ini文件相关知识
- 键值对可用 = 或者 : 进行分隔
- section 的名字是区分大小写的,而 option 的名字是不区分大小写的
- 键值对中头部和尾部的空白符会被去掉
- 值可以为多行
- 配置文件可以包含注释,注释以 # 或者 ; 为前缀
ini文件示例
[server]
age = 45
username = yes
# server就是section
# age、username就是option
操作ini文件
认准三部曲
- 实例化ConfigParser类
- 读取配置文件
- 操作配置文件
基础代码
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"))
最后,绵薄之力
感谢每一个认真阅读我文章的人,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!
资料获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,关注公众号:一个心态巨好的朋友 扣 ‘1’ 即可自行领取。