空手道API:无法将变量传递到其他功能文件

时间:2018-12-11 03:13:32

标签: karate

我从传递URL,用户名和密码的其他功能文件中调用登录功能文件,但它不适用于我。我在这里不使用背景键,我也不想。

 @CallAnotherFeature
 Feature: Call Login Feature

 Scenario: Calling Login Test
 * def config = { endPointURL: 'https://qa1.testurl.com/login',username: 'user123', password: 'password123' }
* def result= call read('Login.feature') config
* print result.response
* print 'Sign In-'+signIn
* print 'Sign In Reponse-'+signIn.response


Feature:  Login Feature

Scenario: Test Login for different users

* print 'Starting Test','#(endPointURL)'
Given url '#(endPointURL)'
* print 'user name','#(username)'
* print 'Password ','#(password)'
#And form field username = '#(username)'
#And form field password = '#(password)'
And request { username: '#(username)', password: '#(password)'}
When method post
Then status 200
* print response
* match response.loginSuccess == true

在Login.feature中,即使它们不起作用,我也尝试将用户名和密码作为表单数据传递。有人可以告诉我我在这里犯什么错误。

我正在使用最新的空手道版本0.9.0

1 个答案:

答案 0 :(得分:3)

我在您的脚本中看到了一些问题,

1。通话登录功能

1.1)在此功能的任何地方,也没有从您的signIn初始化login feature变量,但您正在尝试打印它。

1.2)=应该放置正确;)

* def result = call read('Login.feature') config

2。登录功能

2.1)我认为您误解了嵌入式表达式的概念。仅用于将其模板化为JSON,您可以使用它。但是要调用它,您只需使用变量名即可。

例如

Given url endPointURL
And form field username = username
And request { username: '#(username)', password: '#(password)'}

Given url '#(endPointURL)'
And form field username = '#(username)'

如果您从此处阅读空手道文档-> karate Doc并参考karate Demos

,对于您,我会更加清楚