首页 > 解决方案 > 如何从第一个 api 获取不同的值并使用空手道传入第二个 api

问题描述

来自第一个 api 的响应(其中有重复的对象):

[
{
  "siteHK": "B996F6FC9D3C743A0883A8F383",
  "siteName": "RESIDENTIAL"
},
{
  "siteHK": "EB79DD896F3BAFA754FBAEB27850",
  "siteName": "GROVE"
},
{
  "siteHK": "3C9101A8F0957846505F6E4CC",
  "siteName": "R8 ANADARA"
},
{
  "siteHK": "3C9101A8F0957846505F6E4CC",
  "siteName": "R8 ANADARA"
},
{
  "siteHK": "EB79DD896F3BAFA754FBAEB27850",
  "siteName": "GROVE"
}
]

第二个api请求:

"base_url"/api/test?siteHK={siteHK}

我们需要通过从第一个 api 响应中获取“siteHK”的每个值并传入第二个 api 请求来验证这个 api。

让我们在测试场景中调用一个辅助功能文件:

Feature: Test Feature 

     Background: Test background
      Given url baseURL
      And path '/api/test/first'
      When method get
      Then status 200

    Scenario: Verify test case
        Given def result = call read('classpath:/features/file/testfeature.feature@BaseScenario') $[*]

辅助功能文件:

功能:助手功能:

@BaseScenario
Scenario: Helper scenario
 Given url "base_url"/api/test
 And params {"SiteHk": #(siteHK)}
 When method get
 Then status 200
 match each response == ExpectedResponse

现在,如果我们运行测试功能文件,它将从第一个 api 的响应中获取每个“siteHk”并在第二个 api 中验证,但是我们在第一个 api 的响应中有重复的值,因为不需要验证,所以不需要验证一次又一次地使用相同的测试数据集,这实际上增加了我们的脚本执行时间。

请让我知道如何避免重复值被执行?

标签: apiautomationkarate

解决方案


推荐阅读