关于 yaml 模式验证的错误(此处不允许映射值)是啥意思?

Posted

技术标签:

【中文标题】关于 yaml 模式验证的错误(此处不允许映射值)是啥意思?【英文标题】:What does the error ( mapping values are not allowed here) about yaml schema validation mean?关于 yaml 模式验证的错误(此处不允许映射值)是什么意思? 【发布时间】:2019-12-30 05:03:33 【问题描述】:

我使用tavern 作为我的python 项目的测试框架。用于测试的模拟服务器在 yaml 文件中定义:

test_name: Test phonebook service

stages:
  -name: Make sure we can create new contact
   request:
     url: http://localhost:9301/v2/contact
     method: POST
   response:
     status_code: 200
     body:
      id: 1

当我运行测试时,我得到了这个错误:

/Users/joey/.pyenv/versions/3.7.2/lib/python3.7/site-packages/yaml/scanner.py:579: in fetch_value
    self.get_mark())
E   yaml.scanner.ScannerError: mapping values are not allowed here
E     in "/Users/joey/dev/iress/devel/phonebook-service-api/src/api/tavern-tests/test_contact.tavern.yaml", line 5, column 11

第 5 行是 request:,但我不知道这有什么问题。我认为这不是tavern 问题,而它看起来更像yaml 架构验证问题。

【问题讨论】:

将其粘贴到在线 yaml linter 中,您将看到相同的错误。如果你去掉名字前面的 - ,它就可以工作。 如果我删除名称前面的- 将不起作用,因为它希望stages 成为一个列表 我只是说yaml通过了,希望能帮助你缩小问题范围。 【参考方案1】:

最后我通过在-name 之间放置一个space 使其工作。

test_name: Test phonebook service

stages:
 - name: Make sure we can create new contact
   request:
     url: http://localhost:9301/v2/contact
     method: POST
   response:
     status_code: 200
     body:
      id: 1

【讨论】:

以上是关于关于 yaml 模式验证的错误(此处不允许映射值)是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

如何调试 Helm 图表错误,例如“将 YAML 转换为 JSON 时出错:yaml:在此上下文中不允许映射值”?

AWS IAM Cloudformation YAML 模板错误:不允许使用“空”值

此上下文中不允许使用 YAML 映射值

我可以为 YAML 层次结构中的非叶节点分配值吗?

更漂亮的 YAML - SyntaxError:紧凑映射中不允许嵌套映射

在此上下文中不允许映射值