Python 字典渲染字符串

在自动化测试中,不同文件中的全局变量传递,往往是通过将一些全局变量存放在一个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 Template


def 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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值