ScannerError:此处不允许映射值

pmn*_*eve 5 yaml pyyaml tavern

使用 Tavern 并尝试针对此 yaml 运行 tavern-ci:

test_name: tavern poc

  - name: list
    request:
      url: https://xxx.xxx.xxx.us/api/v3/institutions/
      method: GET
    response:
      status_code: 200
      headers:
        content-type: application/json
      save:
        body:
          content: content
Run Code Online (Sandbox Code Playgroud)

我收到 E ScannerError: 此处不允许映射值 E 在“/Users/xxx/xxx/xxx/test_poc.tavern.yaml”,第 3 行,第 9 列

已经尝试了这里提供的许多解决方案(其中大多数是“在冒号后加一个空格”),但没有任何乐趣。

Yamllint 给出了同样的错误......

Ant*_*hon 6

在 YAML 文档的根部,您有一个带有 key 的映射test_name,并将 value 作为普通标量的开头tavern ....

解析器期望第二行有一个键,其缩进与第一行相同,或者是第一行的普通标量的延续。第二行是空的,因此第三行继续具有相同的期望。在那里它发现一个-比 的开头进一步缩进的test_name,因此它不是键,而是普通标量的一部分。然后它还找到name从第一行开始的普通标量的一部分,然后是:(冒号+空格)。

但在普通标量中不允许使用冒号+空格,因为这会导致另一个键值对的开头存在潜在的歧义。

tavern不太可能的解决方案是在YAML 文档之前和末尾添加双引号 。

更有可能的是,您应该包含一个键,以该键开头的结构- name: list就是该键的值。例如:

test_name: tavern poc

stages:
  - name: list
    request:
Run Code Online (Sandbox Code Playgroud)

(从谷歌搜索“tavern yaml”得到的第二个条目开始)