咱們在作自動化的過程當中不管是接口自動化仍是UI自動化都會存在不少數據,咱們對於自動化中如何存放這些數據也是很重要一點,若是寫在代碼裏的話,每次更換數據就有點繁瑣,咱們能夠經過一個文件存放這些數據,而後再咱們須要這些數據的時候直接進行調用,對於這些數據的管理有不少種如:excel,yaml,ini,conf,今天先介紹一種yaml。python
yaml(yaml不是標記語言)是一種人類可讀的數據序列化語言。它一般用於配置文件,但也用於數據存儲(例如調試輸出)或傳輸(例如文檔標題)。數組
yaml支持的類型:標量(例如字符串,整數和浮點數),列表和關聯數組。安全
yaml的基本語法:app
一、大小寫敏感;測試
二、使用縮進表示層級關係,只可使用空格;spa
三、列表中項經過「-」表示,字典中的經過「:」表示3d
四、# 表示註釋,和python表示註釋同樣調試
yaml的優勢:excel
一、yaml的可讀性好;code
二、yaml和腳本語言的交互性好;
三、yaml使用實現語言的數據類型;
四、yaml有一個一致的信息模型;
五、yaml易於實現;
六、yaml能夠基於流來處理;
七、yaml表達能力強,擴展性好;
安裝
pip install pyyaml
這裏安靜使用的是pycharm,建立一個file,前面文件名稱隨便,後面文件後綴.yaml
咱們能夠經過這個yaml能夠很清楚的讀出來,名字叫作安靜,年齡18歲,職業是軟件測試工程師,年薪爲3K,會的技能有接口測試這個值1K,會的功能測試值2K
# 簡介
name: AnJing
age: 18
profession:
name: 軟件測試工程師
annual: 3K
skill:
- name1: 接口測試
pay: 1K
- name2: 功能測試
pay: 2K
# coding:utf-8 import yaml # 直接打開讀出來 f = open(r'E:\app\Interface\name.yaml','r',encoding='utf-8') result = f.read() print(result) # 轉換成字典讀出來 a = yaml.load(result) print(a)
這個時候發現咱們的數據是成功的讀出來了,可是確定會臥槽,爲啥報錯了?哪裏出了問題?
咱們能夠看到這個地方是禁止使用yaml.load(),由於python認爲load是不安全的,發出了安全警告,那麼咱們如何取消警告呢?
yaml.load(result, Loader=yaml.FullLoader)
#一、數值直接以字面量的形式表示 number: 12.30 #二、布爾值用true和false表示 isSet: true isSet1: false # 三、null用~表示 parent: ~ #四、時間採用 ISO8601 格式。 time1: 2019-11-1 21:59:43.10-05:00 ##五、日期採用複合 iso8601 格式的年、月、日表示。 date: 2019-11-1 #六、YAML 容許使用兩個感嘆號,強制轉換數據類型。 int_to_str: !!str 123 bool_to_str: !!str true
首先建立一個yaml文件,把測試數據寫好,經過字典的形式讀取出來,在根據字典的格式進行提取
# 簡介 name: AnJing age: 18 profession: name: 軟件測試工程師 pay: 2K skill: - name1: 接口測試 pay: 1K - name2: 功能測試 pay: 2K
根據上述方法,經過字典的方式找到須要的值,而後再取出來
# coding:utf-8 import yaml # 直接打開讀出來 f = open(r'E:\app\Interface\name.yaml','r',encoding='utf-8') result = f.read() # 轉換成字典讀出來 a = yaml.load(result,Loader=yaml.FullLoader) print(a) print('個人名字是:%s'%a['name']) print('我作的職位是:%s'%a['profession']['name']) print('我今年%s歲'%a['age']) print('個人年薪是%s'%a['profession']['pay']) print('我會的技能是{}和{}'.format(a['skill'][0]['name1'],a['skill'][1]['name2'])) ------------------------------------------------------------------------- {'name': 'AnJing', 'age': 18, 'profession': {'name': '軟件測試工程師', 'pay': '2K'}, 'skill': [{'name1': '接口測試', 'pay': '1K'}, {'name2': '功能測試', 'pay': '2K'}]} 個人名字是:AnJing 我作的職位是:軟件測試工程師 我今年18歲 個人年薪是2K 我會的技能是接口測試和功能測試