自动化项目配置或用例文件格式推荐--yaml
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                自动化项目配置或用例文件格式推荐--yaml
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.                        
                                關(guān)于yaml
- YAML語言的設(shè)計目標(biāo),就是方便人類讀寫。如果你想要實現(xiàn)一些用ini不好做到的配置,可以使用yaml格式作為配置文件
 - 大小寫敏感
 - 使用縮進(jìn)表示層級關(guān)系
 - 縮進(jìn)時不允許使用Tab鍵,只允許使用空格。
 - 縮進(jìn)的空格數(shù)目不重要,只要相同層級的元素左側(cè)對齊即可
 #表示注釋,從它開始到行尾都被忽略
yaml數(shù)據(jù)結(jié)構(gòu)
1. yaml轉(zhuǎn)字典
yaml中支持映射或字典的表示,如下:
# 下面格式讀到Python里會是個dict
name: 灰藍(lán)
age: 0
job: Tester
輸出:
{'job': 'Tester', 'age': 0, 'name': u'\u7070\u84dd'}
2. yaml轉(zhuǎn)列表
yaml中支持列表或數(shù)組的表示,如下:
# 下面格式讀到Python里會是個list
- 灰藍(lán)
- 0
- Tester
輸出:
[u'\u7070\u84dd', 0, 'Tester']
3. 復(fù)合結(jié)構(gòu)
字典和列表可以復(fù)合起來使用,如下:
# 下面格式讀到Python里是個list里包含dict
- name: 灰藍(lán)
  age: 0
  job: Tester
- name: James
  age: 30
輸出:
[{'job': 'Tester', 'age': 0, 'name': u'\u7070\u84dd'}, {'age': 30, 'name': 'James'}]
4. 基本類型
yaml中有以下基本類型:
- 字符串
 - 整型
 - 浮點型
 - 布爾型
 - null
 - 時間
 - 日期
 
我們寫個例子來看下:
# 這個例子輸出一個字典,其中value包括所有基本類型
str: "Hello World!"
int: 110
float: 3.141
boolean: true  # or false
None: null  # 也可以用 ~ 號來表示 null
time: 2016-09-22t11:43:30.20+08:00  # ISO8601,寫法百度
date: 2016-09-22  # 同樣ISO8601
輸出:
{'date': datetime.date(2016, 9, 22), 'None': None, 'boolean': True, 'str': 'Hello World!', 'time': datetime.datetime(2016, 9, 22, 3, 43, 30, 200000), 'int': 110, 'float': 3.141}
如果字符串沒有空格或特殊字符,不需要加引號,但如果其中有空格或特殊字符,則需要加引號了
str: 灰藍(lán)
str1: "Hello World"
str2: "Hello\nWorld"
輸出:
{'str2': 'Hello\nWorld', 'str1': 'Hello World', 'str': u'\u7070\u84dd'}
這里要注意單引號和雙引號的區(qū)別,單引號中的特殊字符轉(zhuǎn)到Python會被轉(zhuǎn)義,也就是到最后是原樣輸出了,雙引號不會被Python轉(zhuǎn)義,到最后是輸出了特殊字符;可能比較拗口,來個例子理解下:
str1: 'Hello\nWorld'
str2: "Hello\nWorld"
# -*- coding: utf-8 -*-
import yaml
y = yaml.load(file('test.yaml', 'r'))
print y['str1']
print y['str2']
輸出:
Hello\nWorld
Hello
World
可以看到,單引號中的’\n’最后是輸出了,雙引號中的’\n’最后是轉(zhuǎn)義成了回車
讀寫yaml文件
- 安裝:pip install ruamel.yaml
 - 使用ruamel.yaml庫里面函數(shù)參數(shù)Loader=ruamel.yaml.RoundTripLoader和Dumper=ruamel.yaml.RoundTripDumper可以用來保持新生成的yaml文件的表現(xiàn)和輸入文件一致。代碼如下:
 
from ruamel import yaml
if __name__ == "__main__":
    #從yaml文件讀取
  with open('father.yml','r',encoding="utf-8") as f:
        content = yaml.load(f, Loader=yaml.RoundTripLoader)
        # output: <type 'dict'>
        print(type(content))
        print(content)
        content.update({'age': 38})
        print(content)
  #寫入到y(tǒng)aml文件
    with open('ruamel.yml', 'w',,encoding="utf-8") as nf:
        yaml.dump(content, nf, Dumper=yaml.RoundTripDumper)
生成新的yaml文件形式如下,正是我們期望的格式:
name: John Smith
age: 38
spouse:
  name: Jane Smith
  age: 25
children:
- name: Jimmy Smith
  age: 15
- name: Jenny Smith
  age: 12
總結(jié)
以上是生活随笔為你收集整理的自动化项目配置或用例文件格式推荐--yaml的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: MongoDB的使用技巧(转)
 - 下一篇: PHP秒杀面试题