使用" !! python / object"将UUID插入YAML时出错

时间:2017-03-06 19:18:20

标签: pyyaml

对于自动化测试脚本,我想在运行时生成随机UUID值,所以我添加了一些如下所示的YAML:

---
applicant:
  idNumbers:
    nationalId: !!python/object:uuid.uuid4

但是,当我尝试yaml.load值时会产生错误:

ConstructorError: expected a mapping node, but found scalar
  in "<unicode string>", line 4, column 17:
        nationalId: !!python/object:uuid.uuid4
                    ^

如何通过YAML标记注入UUID值?

1 个答案:

答案 0 :(得分:0)

我发现错误信息一开始有点令人生畏,但经过一番思考后,我能够将其解压缩。

解析器期待“映射”节点,而不是标量。那么,如果我添加映射会发生什么?

>>> yaml.load('''---
... applicant:
...   idNumbers:
...     nationalId: !!python/object:uuid.uuid4 {}''')
{'applicant': {'idNumbers': {'nationalId': UUID('71e09d1d-e84e-4ea6-855d-be1a2e91b60a')}}}

其他信息:http://yaml.org/type/map.html