Yaml文件中变量值的替换
遇见问题:
用yaml文件来管理接口、UI自动化测试时,用例的步骤、数据,因为每次测试需要动态变换;但是yaml文件中相关参数可能需要用变量表示,因此替换变量要怎么实现呢?
解决方法:
字符串的模板替换
实例:
测试用例登录中的用户名、密码 动态变换,如图 目录结构如下
test_case.yaml文件内容: 【需要动态替换的值用$符号标识】
request: url: none headers: content-type: none params: username: ${user} password: ${pwd} assert: expect: none real: none
【首先进行yaml文件的读取,读取之后进行变量值的替换,替换后返回字典数据类型类型的值】、
【 Template 类需要传入一个字符串初始化实例对象, substitute 方法传入关键字参数或者字典,注意入参的key与yaml文件中的变量要对应起来】
from string import Template import yaml def yaml_template(params: dict): with open("test_case.yaml", encoding="utf-8") as f: # f.read()读取的是yaml文件的文本格式数据(即读取出来的数据为字符串格式) # 这里代码的作用是将data数据替换f.read()读出来的$标识的数据---简单来说就是读取yaml文件中的数据,然后替换原数据中被$符号标识的变量,得到新的数据(此时没有生成新的对象,只是改变了数据的内容) re = Template(f.read()).substitute(params) # 返回字典格式的数据---反序列化 return yaml.safe_load(stream=re) if __name__ == '__main__': print(yaml_template({ 'user': '1', 'pwd': '123456'})) #其中的user对应的值就是替换${user},pwd的值替换 ${pwd} ,注意user和pwd填写的就是{}里面的变量,不能随意更改
结果输出如下: