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文件中变量值的替换

代码如下:

# read_yaml.py

from string import Template

import yaml


def yaml_template(data: dict):
    with open("a.yml", encoding="utf-8") as f:
        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'}))

运行结果:

yaml文件中变量值的替换

 

上一篇:1.1.1 A+B for Input-Output Practice (I)


下一篇:python:数据文件 - yaml