python配置yaml


  我們在做自動化的過程中無論是接口自動化還是UI自動化都會存在很多數據,我們對於自動化中如何存放這些數據也是很重要一點,如果寫在代碼里的話,每次更換數據就有點繁瑣,我們可以通過一個文件存放這些數據,然后再我們需要這些數據的時候直接進行調用,對於這些數據的管理有很多種如:excel,yaml,ini,conf,今天先介紹一種yaml。

yaml

yaml(yaml不是標記語言)是一種人類可讀的數據序列化語言。它通常用於配置文件,但也用於數據存儲(例如調試輸出)或傳輸(例如文檔標題)。

yaml支持的類型:標量(例如字符串,整數和浮點數),列表和關聯數組。

yaml的基本語法

1、大小寫敏感;

2、使用縮進表示層級關系,只可以使用空格;

3、列表中項通過“-”表示,字典中的通過“:”表示

4、# 表示注釋,和python表示注釋一樣

yaml的優點:

1、yaml的可讀性好;

2、yaml和腳本語言的交互性好;

3、yaml使用實現語言的數據類型;

4、yaml有一個一致的信息模型;

5、yaml易於實現;

6、yaml可以基於流來處理;

7、yaml表達能力強,擴展性好;

安裝

pip install pyyaml

yaml創建

這里安靜使用的是pycharm,創建一個file,前面文件名稱隨便,后面文件后綴.yaml

編寫yaml

我們可以通過這個yaml可以很清楚的讀出來,名字叫做安靜,年齡18歲,職業是軟件測試工程師,年薪為3K,會的技能有接口測試這個值1K,會的功能測試值2K

# 簡介
name: AnJing
age: 18
profession:
name: 軟件測試工程師
annual: 3K
skill:
- name1: 接口測試
pay: 1K

- name2: 功能測試
pay: 2K

讀取yaml

# 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)

 yaml的其他寫法

#1、數值直接以字面量的形式表示
number: 12.30

#2、布爾值用true和false表示
isSet: true
isSet1: false

# 3、null用~表示
parent: ~

#4、時間采用 ISO8601 格式。
time1: 2019-11-1 21:59:43.10-05:00

##5、日期采用復合 iso8601 格式的年、月、日表示。
date: 2019-11-1

#6、YAML 允許使用兩個感嘆號,強制轉換數據類型。
int_to_str: !!str 123
bool_to_str: !!str true

 

讀取yaml具體數值

首先創建一個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
我會的技能是接口測試和功能測試

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM