当前位置: 代码迷 >> 综合 >> pytest-yaml中如何进行变量替换或字符拼接
  详细解决方案

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

热度:77   发布时间:2024-01-31 15:40:09.0

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)