在Web UI自动化测试中,我们可以将用到的配置信息保存在YAML格式的文件中。YAML是YAML Ain't a Markup Language的缩写。YAML的语法和其他高级语言类似,它用空白符号表示缩进,特别适合用来表达配置文件。该类型文件的扩展名为“.yml”,如storm.yml。
YAML文件的基本语法规则如下。
●大小写敏感。
●使用缩进表示层级关系。
●缩进不允许使用Tab键,只允许使用空格键。
●缩进的空格数不重要,只要相同层级的元素左对齐即可。
●“#”表示注释。YAML文件支持多种数据类型。
●对象:键-值对的集合,又称为映射(mapping)、哈希(hashes)、字典(dictionary)。
●数组:一组按次序排列的值,又称为序列(sequence)、列表(list)。
PyYaml是Python中一个专门用于对YAML文件进行操作的模块。该模块同样可以借助pip来安装
(1)YAML对象
- url: "http://localhost:81/redmine/"
- ip: "127.0.0.1"
- import yaml
- with open('my_yaml_1.yml','r',encoding='utf8')as f:
- data=yaml.load(f,Loader=yaml.FullLoader)
- print(data)
- print(data['url'])
- print(data['ip'])
可以看到,data为字典格式
(2)YAML数组
- - storm
- - sk
- - shadow
- - queen
- import yaml
- with open('my_yaml_1.yml','r',encoding='utf8')as f:
- data=yaml.load(f,Loader=yaml.FullLoader)
- print(data)
(3)YAML复合结构
- websites:
- URL: http://localhost/
- IP: 127.0.0.1
- Port: 81
- import yaml
-
- with open('my_yaml_3.yml', 'r', encoding='utf8') as f:
- data = yaml.load(f, Loader=yaml.FullLoader)
- print(data)
- print(data['websites']['URL'])
- print(data['websites']['IP'])
- print(data['websites']['Port'])
在Web UI自动化测试中,可以将系统用到的配置信息以复合结构保存到一个特定文件中。因此,我们可以封装一个函数来读取YAML文件的信息,文件名为“parse_yml.py
- import yaml
-
- '''
- 通过传递文件名、section和key,读取YAML文件中的内容
- '''
- def parse_yml(file, section, key):
- with open(file, 'r', encoding='utf8') as f:
- data = yaml.load(f, Loader=yaml.FullLoader)
- return data[section][key]
-
- if __name__ == '__main__':
- value = parse_yml('my_yaml_3.yml', 'websites', 'URL')
- print(value)