在Tavern中保存变量时,“ JMES路径查询”是什么样的?

时间:2019-11-22 15:33:20

标签: yaml jmespath tavern

在我的Tavern测试文件中,我保存了一个变量,如下所示:

[...]
save:
  headers:
    csrf: x-csrf-token
[...]

当我运行pytest时,它会记录以下警告:

tavern/util/dict_util.py:119: FutureWarning: In a future version of Tavern, selecting for values to save in nested objects will have to be done as a JMES path query - see http://jmespath.org/ for more information

JMESPath.org并没有太大帮助,Tavern's documentation也没有帮助。 “ x-csrf-token”字段未嵌套在“标题”中,因此我不理解警告。我尝试了两种不同的类似于JMES的语法,但都给了我“无法找到关键字”错误:

save:
  csrf: headers.x-csrf-token

save:
  headers:
    csrf: headers.x-csrf-token

Tavern在这里到底期望什么?

1 个答案:

答案 0 :(得分:0)

JMESPath无引号的标识符不能包含连字符。您可以改用quoted identifier。试试:

save:
  headers:
    csrf: '"x-csrf-token"'

需要单引号告诉YAML,双引号是字符串的一部分。 JMESPath中的双引号允许您包含标识符中可能允许使用的字符,例如连字符。