2017-11-06 20 views
1

내가 방법 그러나 나는 다음에 그 코드를 사용하고자하는 글로벌 변수

Scenario: Feature 

Given url 'https://testlocal/v1/test/authorize' 
And request 'type=code&uri=http://www.testlocal/app' 
And header Accept = 'application/x-www-form-urlencoded' 
And header Content-Type = 'application/x-www-form-urlencoded' 
When method POST 
Then status 302 
* def code = responseHeaders['Location'][0].substring(59,95) 
* print code 

내가 코드를 볼 수 있습니다 위의 기능 파일을 실행

이 별도로 인쇄되는 공수 기능 파일을 가지고 내가 수출 할 같은 기능 파일의

Scenario: Login 

Given url 'https://testlocal/v1/test/authorize/login' 
And request '[email protected]&password=123!&requestId=**"I am not sure how to call the above code here"** 
And header Accept = 'application/x-www-form-urlencoded' 
And header Content-Type = 'application/x-www-form-urlencoded' 
When method POST 
Then status 302 

감사

답변

1

는 단지 Background: 섹션이 필요한 것처럼, 다시 사용의 좋은 예로서이 참조 소리 :,321 0.

여러 기능 파일에서 실제로 다시 사용해야하는 경우 re-use feature files via the call keyword에 대한 설명서를 참조하십시오. 전체 솔루션

Background: 
Given url 'https://testlocal/v1/test/authorize' 
And form field type = 'code' 
And form field uri = 'http://www.testlocal/app' 
When method post 
Then status 302 
And def code = responseHeaders['Location'][0].substring(59,95) 

Scenario: login 
Given path 'login' 
And form field username = '[email protected]' 
And form field password = '123!' 
And form field requestId = code 
When method post 
Then status 302 
+0

감사 피터 :

편집 :

나는 다음 대신 수동으로 form field 구문을 사용하여 요청을 형성 할 수있는, 테스트에 개선을 제안하고 싶습니다 나는 ' ll는 나가 공수로 다만 시작한 ㄴ다는 것을 승인해야한다. 전체 코드를 다시 구조화하도록 요청하는 것이 너무 많을까요? 첫 번째 시나리오에서는 내 응답에서 값을 가져 와서 저장하고 내 다음 시나리오에서 동일한 것을 사용하려고합니다. 내가 회의적인 이유는 아마도 구조를 다시 구성 할 수 있다면 ' d는 정말 큰 것입니다. – wilfredcool007

+0

@ wilfredcool007 저는 ' 편집했는데, 이것이 효과가 있기를 바랍니다. –

+0

wokring하지, @ 피터 토마스 'java.lang.RuntimeException가 : 실패 자바 스크립트 평가 : ABC com.intuit.karate.StepDefs에서 com.intuit.karate.Script.evalInNashorn (Script.java:423)에서 \t \t .evalList (StepDefs.java:137) com.intuit.karate.StepDefs.formField (StepDefs.java:225) ✽.And 양식 필드 RequestID가 = ABC에서 \t (예/사용자/users.feature 16)에 \t 에 의해 발생 : javax.script.ScriptException : ReferenceError : "code"는 의 행 번호 1에 정의되어 있지 않습니다. ' – wilfredcool007