尝试在空手道中读取功能文件时出现 SocketTimeoutException 错误

问题描述 投票:0回答:1

在我们的一个用例中,我们尝试读取一个功能文件,其唯一目的是对用户进行身份验证。然后,我从它的响应中提取 tokensessionId 信息,这些信息将在下一个 API 调用中作为标头传递。

通话功能

检索优惠.功能

And call read('classpath:features/AuthenticateUser.feature')
* def token = response.data.uToken
* def sessionId = response.data.user.uSessionId
* configure headers = call read('classpath:headers.js) {uToken : #(token), uSessionId : #(sessionId)'}
And call read('classpath:features/EligibleOffer.feature)
And path '/api/v1/applyOffer'
And method post
Then status 200

称为功能

合格优惠.功能

Scenario: Validate the user is able to get the eligible offers
Given url baseUrl
And path '/api/v1/offers'
When method get
Then status 200

它做的一切都是正确的,从某种意义上说,它为 api 调用 /api/v1/applyOffer 设置了必要的标头信息,该信息位于功能文件 EligibleOffer.feature 中,但是当它尝试点击api,无论我增加超时时间,每次都会出现以下错误。

错误 com.intuit.karate - java.net.SocketTimeoutException:读取超时,http 调用在 url 20054 毫秒后失败:...

已尝试解决方案 - 我尝试配置超时但根本不起作用。

但是,如果我随后通过将所有内容编译在单个功能文件中来重写功能文件,则它可以正常工作。根本不存在超时问题。

检索优惠.功能

* def token = response.data.uToken
* def sessionId = response.data.user.uSessionId
* configure headers = call read('classpath:headers.js) {uToken : #(token), uSessionId : #(sessionId)'}
Given url baseUrl
And path '/api/v1/offers'
When method get
Then status 200
And path '/api/v1/applyOffer'
And method post
Then status 200
karate socket-timeout-exception
1个回答
0
投票

使用背景部分。此部分将在功能文件中的每个场景之前执行。使用 callonce 关键字避免多次调用 AuthenticateUser.feature

Background: 
And callonce read('classpath:features/AuthenticateUser.feature')
* def token = response.data.uToken
* def sessionId = response.data.user.uSessionId
Given url baseUrl

Scenario: Validate the user is able to get the eligible offers

And path '/api/v1/offers'
When method get
Then status 200

© www.soinside.com 2019 - 2024. All rights reserved.