我从传递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
答案 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
,对于您,我会更加清楚