1. 配置文件

配置文件是把程序需要的一些参数或者设置保存到文件当中 

参数,数据主要就是程序运行的依赖数据,没有这些参数,程序可能无法运行

参数实际上就是提供软件的运行环境

说的更直白一点:程序运行的常量

变量:根据程序的运行,可能时刻变化

常量:通常不会变化的,你想改变程序的运行的环境,往往需要你手工修改

如:数据库地址,域名,端口号,数据库连接数,测试账号,excel文件名

好处:对于改变程序的运行,只需要修改配置文件,不需要再修改代码,这种方式叫做无代码化

主流的配置文件格式非常多,如:

Linux系统中的.bashrc,.YAML,.TOML,.JSON,.XML,.INI,.properties

如何选择配置文件:

python中可以把所有程序依赖的变量放到一个固定的文件如config.py

py与.aml的不同之处:

py文件当中的配置变量,只需要导入即可,import config.py

yaml文件是需要读取出来,yaml.safe_load()

根据自己的公司的使用环境来选择是用yaml文件还是.py文件或者其他文件

如果公司自动化测试框架是一个纯python项目,那么用.py文件保存所有配置项

如果公司的项目不是纯python,或者希望非python工程师也可以直接读取配置项,那么用yaml文件

2. YAML文件

格式:

键: 值

键值对之间用的是冒号,冒号之后要有一个空格(至少一个,多了也没关系)

ymal文件的写法格式跟python大多数相似,需要注意的是字符串尽量用引号包裹起来,还有一个注意点是yaml中没有三引号注释,写的时候没有问题,但读出的时候会报错yaml.scanner.ScannerError: while scanning a simple key

python conf配置文件格式 python设置配置文件_嵌套

读取yaml文件:

第一步:先安装pyyaml

第二步:导入 import yaml

import yaml
import pprint
with open('demo01.yaml', encoding='utf-8') as f:
    data = yaml.safe_load(f)
pprint.pprint(data)

运行结果:

{'database': '127.168.1.13',
 'hobby': [1, 2, 3],
 'hobby1': [1, 2, 3],
 'info': {'age': 18, 'name': 'momo'},
 'info1': {'age': 18, 'name': 'momo1'},
 'password': 123456,
 'username': 'mo: mo'}

注意data的值是个字典

我们自动化测试可以使用yaml文件保存设置选项,也可以保存测试用例数据

3. INI文件

ini也是配置文件中的一种,它比较适合配置项的数据类型只是简单的字符串,数字的情况,如果涉及数组和字典的嵌套会比较吃力,现在用的越来越少,主流的还是yaml文件,所以这种就不过多介绍了

ini配置格式有几个注意点:

-- section无法嵌套,嵌套后的效果和没有嵌套的是一样的

[default]

    [db]

    host=http://www.baidu.com

获取这个host的方式不会发生任何变化,default并不是db的你级

-- 字符串的表示不需要加引号,否则引号也会被解析出来

[db]

host="http://www.baidu.com"

host1=http://www.baidu.com

等到的结果:

"http://www.baidu.com"

http://www.baidu.com

-- 等号前后可以有空格,也可以不用

注意:ini不需要安装,直接导入就可用

新建demo02.ini文件,代码如下


[default]host = http://www.baidu.com [db] host = 'http://www.baidu.com' port = 3306 name = 'py'


from configparser import ConfigParser


parser = ConfigParser()
parser.read('demo02.ini',encoding='utf-8')
host = parser.get('default','host')
db_host = parser.get('db','host')
port = parser.get('db','port')
print(host)
print(db_host)
print(port)

运行结果:

http://www.baidu.com 'http://www.baidu.com'
3306