【问题标题】:ScannerError: mapping values are not allowed hereScannerError:此处不允许映射值
【发布时间】:2019-08-16 05:52:51
【问题描述】:

使用 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

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

已经尝试了这里介绍的许多解决方案(其中大部分是“在冒号后加一个空格”),但并不高兴。

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

【问题讨论】:

    标签: yaml pyyaml tavern


    【解决方案1】:

    在您的 YAML 文档的根目录中,您有一个键为 test_name 的映射,值是一个普通标量 tavern .... 的开头。

    解析器需要一个键,缩进与第一行相同,在第二行或第一行的普通标量的延续。第二行是空的,所以它继续与第三行相同的期望。在那里它找到了一个-,它比test_name 的开头缩进更多,所以它不是键,而是普通标量的一部分。然后它发现name 也是从第一行开始的普通标量的一部分,然后是:(冒号+空格)。

    但是在纯标量中不允许使用冒号+空格,因为这会导致另一个键值对的开头可能产生歧义。

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

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

    test_name: tavern poc
    
    stages:
      - name: list
        request:
    

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

    【讨论】:

    • 谢谢你,@Anthon!还在习惯 yaml 的细节。
    猜你喜欢
    • 1970-01-01
    • 2021-05-02
    • 2014-12-13
    • 2019-10-27
    • 1970-01-01
    • 2016-07-13
    • 1970-01-01
    • 1970-01-01
    • 2019-12-09
    相关资源
    最近更新 更多