python自動(dòng)化測(cè)試(一)讀取yaml文件

一? Yaml簡(jiǎn)介

1.yaml [?j?m?l]: Yet Another Markup Language :

? ? ? ? ?另一種標(biāo)記語(yǔ)言。yaml 是專門(mén)用來(lái)寫(xiě)配置文件的語(yǔ)言,非常簡(jiǎn)潔和強(qiáng)大,之前用ini也能寫(xiě)配置文件,看了yaml后,發(fā)現(xiàn)這個(gè)更直觀,更方便,有點(diǎn)類似于json格式


2.yaml基本語(yǔ)法規(guī)則:

? ? ? ? ? ?大小寫(xiě)敏感

? ? ? ? ? 使用縮進(jìn)表示層級(jí)關(guān)系

? ? ? ? ? 縮進(jìn)時(shí)不允許使用Tab鍵,只允許使用空格。

? ? ? ? ? 縮進(jìn)的空格數(shù)目不重要,只要相同層級(jí)的元素左側(cè)對(duì)齊即可

? ? ? ? ? #表示注釋,從這個(gè)字符一直到行尾,都會(huì)被解析器忽略,這個(gè)和python的注釋一樣


3.yaml支持的數(shù)據(jù)結(jié)構(gòu)有三種:

? ? ? ? 對(duì)象:鍵值對(duì)的集合,又稱為映射(mapping)/ 哈希(hashes) / 字典(dictionary)

? ? ? ? 數(shù)組:一組按次序排列的值,又稱為序列(sequence) / 列表(list)

? ? ? ? 純量(scalars):?jiǎn)蝹€(gè)的、不可再分的值。字符串、布爾值、整數(shù)、浮點(diǎn)數(shù)、Null、時(shí)間、日期

字典如下:

#python

"data":?

? ? ? ? {? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

? ? ? ? ? ? “user”: "admin",? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

? ? ? ? ? ?"pasword": "123456"

? ? ? ?}

# yaml

data:

? ? ? ? ?user: admin

? ? ? ? ?password: 123456

list如下

#python?

[{'admin1': 123456}, {'admin2': 111111}, {'admin3': 222222}]?

#yaml

- admin1: 123456

- admin2: 111111

- admin3: 222222?

純量如下:

yaml? ? ? ? ? ? ? ? ? ?python

n1:12.30? ? ? ? ? ? n1=12.3

n2: true? ? ? ? ? ? ? n2=True

n3: false? ? ? ? ? ? n3=False

n4: ~? ? ? ? ? ? ? ? ? n4=None


4.使用pip安裝pyyaml模塊:

? ? ? ? pip install pyyaml


二? python讀取yaml文件

yaml文件示例:

- desc: 正常登錄

? url: http://ip:auth/oauth/token

? headers:

? ?Authorization: Basic cGlnOnBpZw==

? method: post

? datail: 正常登錄

? data:

? ? username: admin

? ? password: lucy

? ? grant_type: password

- desc: 密碼錯(cuò)誤

? url: http://ip:auth/oauth/token

? headers:

? ? Authorization: Basic cGlnOnBpZw==

? method: post

? datail: 密碼錯(cuò)誤

? data:

? ? username: admin

? ? password: 123456

? grant_type: password

python文件示例

import yaml

import requests

with open('data.yaml','r',encoding='utf-8') as f:

? ? ?file_content=f.read()

contet=yaml.load(file_content,yaml.FullLoader)

for item1 in contet:

? ? data=item1['data']

? ?url=item1['url']

? headers=item1['headers']

? if item1['method']=="get":

? ? ? ? response=requests.get(url=url,data=data,headers=headers)

? ? ? ? print(response.text)

? else:

? ? ? ? response=requests.post(url=url,data=data,headers=headers)

? ? ? ?print(response.text)

輸出結(jié)果如下:

{"access_token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJsaWNlbnNlIjoibWFkZSBieSBob25nZGlhbjE1OTI3IiwidXNlcl9uYW1lIjoiYWRtaW4iLCJzY29wZSI6WyJzZXJ2ZXIiXSwiZXhwIjoxNTk4ODcwNzY2LCJ1c2VySWQiOjEsImF1dGhvcml0aWVzIjpbIlJPTEVfQURNSU4iLCJST0xFX1VTRVIiXSwianRpIjoiMGI5MTU0MzMtM2M2Mi00M2NkLWI1NWQtMmI4OWYxNTQ1ZmM2IiwiY2xpZW50X2lkIjoicGlnIn0.qlLu9QmTVZ2Ss53hQ1DcAa9rpmCELLAIfHyO6vAKJ-g","token_type":"bearer","refresh_token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJsaWNlbnNlIjoibWFkZSBieSBob25nZGlhbjE1OTI3IiwidXNlcl9uYW1lIjoiYWRtaW4iLCJzY29wZSI6WyJzZXJ2ZXIiXSwiYXRpIjoiMGI5MTU0MzMtM2M2Mi00M2NkLWI1NWQtMmI4OWYxNTQ1ZmM2IiwiZXhwIjoxNjAxNDMzOTY2LCJ1c2VySWQiOjEsImF1dGhvcml0aWVzIjpbIlJPTEVfQURNSU4iLCJST0xFX1VTRVIiXSwianRpIjoiNDRmYWU3ODUtZWQzZS00ZGRlLTkwZTktNmM5MDZmYzAxYzNkIiwiY2xpZW50X2lkIjoicGlnIn0.u57tUCzMLcwR5MfOTDyQ2xcjzpV-J4fFoHHiExUlOxk","expires_in":28799,"scope":"server","license":"made by hongdian15927","userId":1,"jti":"0b915433-3c62-43cd-b55d-2b89f1545fc6"} {"error":"invalid_grant","error_description":"用戶名不存在或者密碼錯(cuò)誤"}?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容