在自动化测试中,不同文件中的全局变量传递,往往是通过将一些全局变量存放在一个dict的字典中,再通过字典的get(key)来传递和接收,最后将其应用到请求数据中。这里介绍的是另一种方式,是通过jinja2夹具来将全局变量字典中的K:V渲染到一个字符串中。
1.安装
pip install jinja2
2.导包
这里要用到jinja2的Template类
from jinja2 import Template
3.代码示例
# -*- coding:utf-8 -*-
# @File:vars_render.py
# @Date:2025/5/28 22:33
# @Author:wayne
# @description:将字典dict的K:V渲染到一个字符串中
from jinja2 import Templatedef reFlash(target, contexts):"""使用字符串模板和字典来进行字符串的替换操作:param target: 目标字符串,即需要被替换的字符串,数据类型:str:param contexts: 替换的原字典,数据类型:dict:return: 返回替换后的字符串,如果target是个字典类型,则使用eval()函数将其还原"""if isinstance(target, dict):# 如果target原本是字典类型,则先强转为字符串类型后进行替换,再使用eval()函数将结果 "{}" 字符串还原成字典return eval(Template(str(target)).render(contexts))else:# 如果target原本是非字典类型,则先强转为字符串类型,再进行替换return Template(str(target)).render(contexts)if __name__ == '__main__':context = {"name": "张三", "age": 20}target1 = "我是{{name}},今年{{age}}岁"rf = reFlash(target1, context)print(type(rf), "======", rf)target1 = {"name": "{{name}}", "age": 19}rf = reFlash(target1, context)print(type(rf), "======", rf)