常见配置文件在Python中的使用

 

配置文件主要为了存储常用的常量,如数据库的信息,通用的账号和密码等。常见的配置文件格式有ini,yaml,toml,json,env等,在做自动化测试的时候,它们都起什么样的作用?在什么样的场合下应用哪些配置文件?

 

一、ini配置文件

简介:

ini配置文件是最直接的配置文件,也是最简单的配置文件,将变量值通过键值对的方式存储。

 

特点

  (1)支持注释,可使用#或;注释

  (2)便于管理,[标签]将变量分组
  (3)便于阅读,键值对的方式,使用冒号或等号均可
  (4)支持字符串及数值数据类型,适用于简单的字符串和数值的键值对
  (5)读写ini配置文件使用内置模块configparser,无需依赖第三方模块

缺点

  (1)读取ini配置字段值的时候,需频繁通过标签和键Kev获取Value值。
  (2)支持的数据类型有限,仅支持1个层级的数据结构,如多层级的字典将被理解为1个字符串。
  即不论存储的是字典还是列表,读取的值是字符出格式,需要通过解析转换,比较麻烦。

 

创建ini文件

# default
[default]
username = "张三"
password = "123456"

#Database
[Database]
host = "127.0.0.1"
user = "root"
pwd = "123456"
port = 3306
db = "test"

[test]
nums = {"one":1,"two":2}
l = ['1','2','3','4']

  

读取ini配置文件

from configparser import ConfigParser

config = ConfigParser()
config.read('config.ini', encoding='utf-8')

# 获取全部标签
sections = config.sections()
print(sections)

# 获取某个标签
Database = config['Database']
print(Database)

# 获取某个Key的值
# 方法1,通过获取标签后再获取对应的键值
host = Database['host']
print(host)

# 方法2:使用get方法
user = config.get('Database','user')
print(user)

# 方法3:直接获取
pwd = config['Database']['pwd']
print(pwd)

  

写入ini配置文件

from configparser import ConfigParser

config = ConfigParser()

# 方法1:一次性将标签的所有值写入
config['Database'] = {

       "host": "127.0.0.1",
       "user": "root",
       "pwd": "123456",
       "port": 22,
       "db": "test"

}

# 方法2:单独写入
config['default'] = {}
default = config['default']
default['username'] = 'zhangsan'
default['password'] = '123456'

# 打开配置文件,写入标签值
with open('config.ini', 'w') as f:
  config.write(f)

  

 

二、yaml配置文件

简介

yaml配置文件刚好可以弥补下ini配置文件支持数据类型较少的缺点,yaml文件的特点是支持结构化的数据,如字典和列表,所以,如果层级结构较多的数据场景还是建议使用yaml配置文件。

 

特点

(1)支持注释,#表示注释

(2)空格缩进区分层级,且空格数量不要求,对齐即可

(3)适用于有层次结构的数据,如字典

(4)大小写敏感

(5)依赖第三方PyYAML模块

(6)方便重复内容的引用

缺点

(1)文件内容较多时,难以阅读和编辑。 主要也是空格不可见,使用空格相同个数表示同一层级,难以阅读,容易耗费时间在数空格对齐层级上,且存在制表符Tab键可能被使用,但很难排查

 

下载

pip install PyYAML

  

创建yaml配置文件

code: 200
students:
    -
      name: 张三
      age: 12
      hobby:
          - 打篮球
          - 跑步
    -
      name: 李四
      age: 17
      hobby:
          - 打羽毛球
          - 看书

  

读取yaml配置文件

import yaml

def read_yaml(path):
    with open(path, 'r') as f:
        data = yaml.safe_load(f.read(), Loader=yaml.FullLoader)
        print(data)


if __name__ == '__main__':
    yaml_path = "y.yml"
    read_yaml(yaml_path)

  

写入yaml配置文件

import yaml

def write_yaml(path):
  d1 = {"code":200,"students":[{"name":"张三","age":12,"hobby":["打篮球","跑步"]},{"name":"李四","age":17,"hobby":["打羽毛球","看书"]}]}

  with open(yaml_path ,'a') as f:
    yaml.dump(d1,f,allow_unicode=True)

if __name__ == '__main__':
    yaml_path = "y.yml"
    write_yaml(yaml_path)

  

 

三、json配置文件

简介

json是常见的一种数据格式,而json配置文件主要是针对json格式的数据。

 

特点

(1)支持多层级数据结构

(2)Key和字符串必须使用双引号

 

创建config.json配置文件

{
   "Database":{
       "host": "127.0.0.1",
       "user": "root",
       "pwd": "123456",
       "port": 22,
       "db": "test"
   }
}

  

读取json配置文件

import json

with open('config.json') as f:
    config = json.load(f)['Database']
    print(config)

  

写入json配置文件

import json

db_json = {
   "Database":{
       "host": "127.0.0.1",
       "user": "root",
       "pwd": "123456",
       "port": 22,
       "db": "test"
   }
}
with open('config.json', 'w') as f:
    json.dump(db_json,f)

  

四、toml配置文件

简介

toml是前GitHub CEO, Tom Preston-Werner,于2013年创建的语言,其目标是成为一个小规模的易于使用的语义化配置文件格式。toml配置文件可读性强,并且易于编辑

 

特点

(1)支持注释,#表示注释

(2)大小写敏感

(3)便于管理,使用[标签]将变量分组

(4)字符串必须使用单引号或双引号

(5)布尔值必须存储为true和false

(6)支持数据类型较多,如字符串,数值,日期,数组,字典

(7)使用键=值的方式存储

(8)支持“嵌套表”概念

 

创建config.toml配置文件

[Database]
host = "127.0.0.1"
user = "root"
pwd = "123456"
port = 3306
db = "test"

[Database.One]
l1   = [ "1", "2", "3", "4"]

[Database.Two]
a = 1

  

下载

pip install toml

  

读取toml配置文件

import toml

config = toml.load('config.toml')

# 获取标签内容方式1:
Database1 = config['Database']
print(Database1)

# 获取标签内容方式2:
Database2 = config.get('Database')
print(Database2)

# 获取键值方式1:
host1 = config['Database']['host']
print(host1)

# 获取键值方式2:
host2 = config.get('Database').get('host')
print(host2)

  

写入toml配置文件

import toml

Database = {'host': '127.0.0.1', 'user': 'root', 'pwd': '123456', 'port': 3306, 'db': 'test', 'One': {'l1': ['1', '2', '3', '4']}, 'Two': {'a': 1}}

with open('config.toml', 'w') as f:
    toml.dump(Database, f)

  

五、.env配置文件

简介:

.env主要是将变量值通过环境配置的方式存储。

 

特点:

(1)键值对key=value方式存储

(2)Key一般使用大写

缺点:

(1)仅支持字符串,不支持其他类型数据

 

读写.env配置文件

import os

# 设置变量方式1
os.environ.setdefault('MYENV','zhangsan')

# 设置变量方式2
os.environ['MYENV2'] = 'lisi'

# 方式1
user1 = os.environ['MYENV']
print(user1)

# 方式2
user2 = os.environ.get('MYENV2')
print(user2)

  

 
posted @ 2023-04-28 17:21  北京测试菜鸟  阅读(607)  评论(0编辑  收藏  举报