我们可以在“获取Json值”键中传递多个参数吗?

时间:2019-11-08 08:56:43

标签: python-2.7 http robotframework

我现在要通过获取Json值键获取一个arg值

Create Session  Get_Inventory_Details   ${Base_URL}                 
${Headers}= Create Dictionary   Content-Type=application/json   Authorization=bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyTmFtZSI6InByaXRpc3dhaW4iLCJpYXQiOjE1Njc1MTQ2NDd9.o3qTPbj2KH6AgHpIf1BLV5nOlGL-fR83wSGAYyuWsBQ              
${Response}=    Get Request Get_Inventory_Details   inventorybyOutlet/7 headers=${Headers}          
Log To Console  ${Response.status_code}                     
Log Many    ${Response.content}                     
${actual_response}= Convert To String   ${Response.status_code}                 
Should Be Equal ${actual_response}  200 
${quantity}=    Get Json Value  ${Response.content} /0/currentInventory             
Run Keyword If  ${quantity}>10  Log Threshold Condition Pass    ELSE    Log Threshold Condition Fail

如果我想在获取Json值

中传递多个arg,可能的出路是什么?

我尝试过

${quantity}=    Get Json Value  ${Response.content} /0/currentInventory/0/itemid

Reference to Json Data


[ 
   { 
      "isInventoryOperationEnable":1,
      "itemId":1,
      "name":"Afghani Chicken Tikka Biryani (Heavy Eater)",
      "posName":"Afghani Chicken Tikka Biryani (Heavy Eater)",
      "image":"https://d30mle0t4iy75h.cloudfront.net/websiteV2/images/menuItems/AfghaniTikkaBiryani.jpg",
      "typeid":2,
      "isCombo":0,
      "currentInventory":100,
      "categoryId":1,
      "categoryname":"Biryani",
      "subCategoryId":1,
      "sequenceInCategory":1
   },
   { 
      "isInventoryOperationEnable":1,
      "itemId":3,
      "name":"Chicken Tikka Biryani (Heavy Eater)",
      "posName":"Chicken Tikka Biryani (Heavy Eater)",
      "image":"https://d30mle0t4iy75h.cloudfront.net/websiteV2/images/menuItems/ChickenTikkaBiryani.jpg",
      "typeid":2,
      "isCombo":0,
      "currentInventory":100,
      "categoryId":1,
      "categoryname":"Biryani",
      "subCategoryId":1,
      "sequenceInCategory":14
   }
      ]

但是RobotFramework抛出错误为:- JsonPointerException:文档”不支持索引,必须是映射/序列或支持__getitem __

Error Message on RobotFramework

在这种情况下,任何人都可以帮助找到一种方法来传递超过1个arg的方法

谢谢

1 个答案:

答案 0 :(得分:1)

Create Session  Get_Inventory_Details   ${Base_URL}                 
${Headers}= Create Dictionary   Content-Type=application/json   Authorization=bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyTmFtZSI6InByaXRpc3dhaW4iLCJpYXQiOjE1Njc1MTQ2NDd9.o3qTPbj2KH6AgHpIf1BLV5nOlGL-fR83wSGAYyuWsBQ              
${Response}=    Get Request Get_Inventory_Details   inventorybyOutlet/7 headers=${Headers}          
Log To Console  ${Response.status_code}                     
Log Many    ${Response.content}                     
${actual_response}= Convert To String   ${Response.status_code}                 
Should Be Equal ${actual_response}  200 
${response_content_json}=   To Json    ${Response.content}    #To Json is from RequestsLibrary
${quantity}=    Set Variable    ${response_content_json}[0][currentInventory]
Run Keyword If  ${quantity}>10  Log Threshold Condition Pass    ELSE    Log Threshold Condition Fail

在这种情况下,${quantity}100

请注意两件事:

  • 转换为JSON后,可以像dictionary类型变量一样访问变量值
  • To JSON关键字来自RequestsLibrary