代码之家  ›  专栏  ›  技术社区  ›  Michal

如何在多个jsonpath提取中正确使用checkif

  •  0
  • Michal  · 技术社区  · 6 年前

    我有一个场景,我发送GET请求,有时可以返回404,我不想在最终报告中报告为错误。 另外,如果请求成功,我需要从json响应中提取多个值。

    一般来说,当我独立使用时,我想使用的这两个动作对我来说是很好的。

    1. 从响应中提取多个json值:

      jsonPath("$..usrn").saveAs("usrn"),
      jsonPath("$..street_descriptor").saveAs("street_descriptor"),
      ....      
      )
      
      
    2. 手柄404S:

      status.saveAs("responseStatus"),
      checkIf(session => session("responseStatus").as[Int] == 200) {
        substring(usualHeader).exists
      },
      checkIf(session => session("responseStatus").as[Int] == 404) {
        substring(errorHeader).exists
      }
    

    但当我试图将这两个操作结合起来时,我所能做的就是遵循代码,这两个操作可以编译并实际提取数据。 但我觉得没有这种重复就可以做到

    .check(
      status.saveAs("responseStatus"),
      checkIf(session => session("responseStatus").as[Int] == 200) {
        jsonPath("$..usrn").saveAs("usrn")
      },
      checkIf(session => session("responseStatus").as[Int] == 200) {
        jsonPath("$..street_descriptor").saveAs("street_descriptor")
      },
       ...
      checkIf(session => session("responseStatus").as[Int] == 404) {
        substring("404 error").exists
      }
    

    我在加特林3.0.3

    0 回复  |  直到 6 年前
        1
  •  2
  •   James Warr    6 年前

    你可以用可选的支票

    .check(
      status.in(200, 404),
      jsonPath("$..usrn").optional.saveAs("usrn"), 
      jsonPath("$..street_descriptor").optional.saveAs("street_descriptor")
    )
    
    推荐文章