yaml文件中變量值的替換


前言

在做接口、UI自動化的時候,我們可以用yaml文件來管理測試用例的步驟、數據,因為每次測試的數據需要動態變換;但是yaml文件中相關參數可能需要用變量表示。那么,我們怎么在代碼中進行變量的傳值呢?

解決方法:

字符串的模板替換功能

具體使用可以參考這篇博客模板字符串(python基於template實現字符串替換)

實例

場景:登錄接口測試用例,token需要實時替換為最新的token之后發起請求,請求體的數據也可以通過在代碼中字典的方式傳遞參數賦值給$標記的數據

a.yml用例文件:【需要動態替換的值用$符號標識】

method: get
url: http://www.baidu.com
headers:
  Content-Type: application/json
  token: $token
data:
  username: $username
  password: $password

如:

代碼如下:【首先進行yaml文件的讀取,讀取之后進行變量值的替換,替換后返回字典數據類型類型的值】、

【 Template 類需要傳入一個字符串初始化實例對象, substitute 方法傳入關鍵字參數或者字典,注意入參的key與yaml文件中的變量要對應起來】

# read_yaml.py

from string import Template

import yaml


def yaml_template(data: dict):
    with open("a.yml", encoding="utf-8") as f:
       #  f.read()讀取的是yaml文件的文本格式數據(即讀取出來的數據為字符串格式) 
       #  這里代碼的作用是將data數據替換f.read()讀出來的$標識的數據---簡單來說就是讀取yaml文件中的數據,然后替換原數據中被$符號標識的變量,得到新的數據(此時沒有生成新的對象,只是改變了數據的內容)
        re = Template(f.read()).substitute(data)

        print(re, type(re))
        # method: get
        # url: http: // www.baidu.com
        # headers:
        #     Content - Type: application / json
        #     token: hdadhh21uh1283hashdhuhh2hd
        # data:
        #     username: admin
        #     password: 123456
        #
        # <class 'str'>

        print(yaml.safe_load(stream=re), type(yaml.safe_load(stream=re)))
        #  {'method': 'get', 'url': 'http://www.baidu.com', 'headers': {'Content-Type': 'application/json', 'token': 'hdadhh21uh1283hashdhuhh2hd'}, 'data': {'username': 'admin', 'password': 123456}} <class 'dict'>
        # 返回字典格式的數據---反序列化
        return yaml.safe_load(stream=re)


if __name__ == '__main__':
    print(yaml_template({'token': 'hdadhh21uh1283hashdhuhh2hd', 'username': 'admin', 'password': '123456'}))

運行結果:

 


免責聲明!

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



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