Karate: Get all users and delete with the reference id

一曲冷凌霜 提交于 2020-01-24 20:54:05

问题


After my tests are completed, I would like to delete all the users that were created. I am able to delete one user at a time. Can we do this using conditional logic?

Feature file:

Given path  'users'
    And header Authorization = authId
    And header Accept = 'application/json;version=2'
    When method Get
    Then status 200
    Then print 'Response Time: '+ responseTime + ' milliseconds'
    * def resp = $
    * def size = karate.sizeOf(resp)
    * print 'Number of users: ' + size

This gives me below response:

[
  {
    "firstName": "Edit User",
    "lastName": "API Test",
    "emailAddress": "edituserapitesting@gmail.com",
    "ada": true,
    "isDeleted": false,
    "alerts": [],
    "links": [
      {
        "href": "https://someurl/api/users/0219360d-5ca6-42af-9e9c-10be1e32d219",
        "rel": "self"
      }
    ]
  },
  {
    "firstName": "Create",
    "lastName": "Test",
    "emailAddress": "api@test.com",
    "ada": true,
    "isDeleted": false,
    "alerts": [],
    "links": [
      {
        "href": "https://someurl/api/users/5e3c9be1-2863-4a2d-85e9-966582b127ac",
        "rel": "self"
      }
    ]
  },
  {
    "firstName": "Create",
    "lastName": "Test",
    "emailAddress": "api@test.com",
    "ada": true,
    "isDeleted": false,
    "alerts": [],
    "links": [
      {
        "href": "https://someurl/api/users/b6feb126-bca2-43e6-ba2d-87aaae81fef0",
        "rel": "self"
      }
    ]
  },
  {
    "firstName": "Create",
    "lastName": "Test",
    "emailAddress": "api@test.com",
    "ada": true,
    "isDeleted": false,
    "alerts": [],
    "links": [
      {
        "href": "https://someurl/api/users/4f07f234-9606-4cf5-94ce-3a42fb11a6d7",
        "rel": "self"
      }
    ]
  }
]

I have to get the id [Eg:4f07f234-9606-4cf5-94ce-3a42fb11a6d7] from each json and pass it to delete path.


回答1:


Please read about transforms: https://github.com/intuit/karate#json-transforms

Now in one line you can get an array of ids:

* def ids = karate.map(response, function(x){ var link = x.links[0].href; return link.substring(link.lastIndexOf('/') + 1) })

Now you can use this in a loop or data driven test and do what you want.



来源:https://stackoverflow.com/questions/58636764/karate-get-all-users-and-delete-with-the-reference-id

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!