pytest-yaml中如何进行变量替换或字符拼接

yaml中变量替换

  1. 可以使用重复的节点,“&”和“*”配对使用,仅能做普通的替换不能拼接
  2. 使用&为变量类似于起了个别名,在后续可以使用*进行使用
  3. 示例
dec: "预稿库列表页数据查询"
a: &a_path "/api/v1/opt/material/"
b: *a_path

读取yml文件时使用的是:

data = yaml.load(file_data, Loader=yaml.FullLoader)

读取yml文件结果:

{'dec': '预稿库列表页数据查询', 'a': '/api/v1/opt/material/', 'b': '/api/v1/opt/material/'}

yaml中进行变量拼接

  1. 场景:若想在yml文件中进行变量的拼接,使b的值为 "/api/v1/opt/material/0"。
  2. 使用os.path.join进行拼接
  3. 示例:
---
dec: "预稿库列表页数据查询"
a: &a_path "/api/v1/opt/material/"
url: !!python/object/apply:os.path.join [*a_path, "0"]

读取yml文件结果:

{'dec': '预稿库列表页数据查询', 'a': '/api/v1/opt/material/', 'url': '/api/v1/opt/material/0'}

使用中遇到问题

  1. yaml中进行变量拼接时报错
  • 使用os.path.join时遇到报错:yaml.constructor.ConstructorError: could not determine a constructor for the tag 'tag:yaml.org,2002:python/object/apply:os.path.join'

  • 解决方案:将读取yaml文件的语句改为 data = yaml.unsafe_load(file_data)

     

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值