簡體   English   中英

如何在空手道中迭代多個特征文件

[英]How to iterate multiple feature files in karate

特征文件 1:inputData.feature

     @ignore
     Feature: Input data table
     Scenario: Input table for testing
* table testData
  | accountId           |  accountname    | expectedAccount  |
  | 'ADS5678543'   | 'Peter'              | 'DFCVSAEFRG'     |
  | 'ASDCF45678'   | 'Caroline'           |  'DFCWEAEFRG'    |

文件 2:payload.json

{
"channelData": {
"data": "CHANNEL_DATA",
"salesChannel": "WEB",
"createdBy": "WEBSITE",
"accountId": "#(accountId)",
"sessionId": "#(accountname)"
 }
}

文件 3:Request.feature

@ignore
Feature:

Scenario:
 # read the payload from json file
 * def Request = read('../payload.json')
 * def headersData = { "Content-Type" : "application/json"}
 Given url BaseUrl + '/account/'+'#(accountId)'
 And request Request
 And headers headersData
 When method post
 Then status 200
 * print response
  * def account = karate.jsonPath(response, "$.account")
 * print 'account is '+account
 Then match account == '#(expectedAccount)'

文件 4:addressinfo.feature

@ignore
Feature:

Scenario:
   * def Request = “{
     “accountId": "#(resAccount)”
    }
 ”
 * def headersData = { "Content-Type" : "application/json"}
 Given url BaseUrl +'#(resAccount)’+'/address’
 And request Request
 And headers headersData
 When method post
 Then status 200
 * print response

File5: Account-token.feature

  Feature: 
Scenario: identify the reference account
 * def initTestData = read('../inputData.feature')
 * def reqRes = karate.call('../Request.feature', { initTestData : initTestData })
 * def resAccount =  $reqRes[*].account // output of this is [“SB987658”,”SB984345”]
 * def addressData = read('../addressinfo.feature’,{resAccount: resAccount}) 

在上面的場景中,我們必須將 Request.feature 的輸出作為輸入傳遞給addressing.feature。 java.net.URISyntaxException:索引 34 處的路徑中存在非法字符: http ://10.36.145.196:9983/invoker/ [ “SB987658”,“SB984345”]/address。 我們的要求是它應該迭代 resAccount 的每個值,我們需要將 addressinfo.feature 的 o/p 響應作為 I/p 傳遞給另一個特征文件。

需要循環的call參數的規則是它必須是一個 JSON 數組。 參考: https : //github.com/intuit/karate#data-driven-features

所以你可以轉換原始數組,參考: https : //github.com/intuit/karate#json-transforms

* def resAccountList = karate.map(resAccount, function(x){ return { resAccount: x } })

我不得不說你的測試設計得很糟糕,將來會給你帶來維護問題。 盡量避免“過多重用”,盡量避免call 請參閱此答案以了解原因: https : //stackoverflow.com/a/54126724/143475

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM