【发布时间】:2018-02-21 10:04:16
【问题描述】:
我正在使用现有的 Testng+Restasured 设置来尝试空手道。 我是空手道和黄瓜的新手。
我正在尝试使用默认用户名和密码登录我的服务。 这里对我来说有很多挑战,因为我目前不明白控制是如何流动的。
我有以下 karate-config.js 文件:
function() {
karate.configure('connectTimeout', 5000);
karate.configure('readTimeout', 5000);
var protocol = 'https';
var config = { baseUrl: protocol + '://staging.com'};
return config;
}
这是我的 login.feature 文件:
Feature: login
Background:
* url baseUrl
# required payload = {"enc_login_id":"","password":"","timestamp":"","type":"","client":"","encrypted":false,"source":"web"}
Scenario: Login as User
# epoch time
* def time = (new Date).getTime();
Given path '/sso/authenticate'
And form field enc_login_id = 'demo@gmail.com'
And form field password = 'gmail1213'
And form field timeStamp = time
When method post
Then status 200
And def sessionID = response.session_id
And print 'SessionID: ' , sessionID
这是我用于该功能的 Login.java 文件:
import cucumber.api.CucumberOptions;
@CucumberOptions(
features = "login.feature"
)
public class LoginKarateTest {
}
运行此功能时出现以下错误:
java.lang.RuntimeException:javascript 评估失败:baseUrl
我不知道这里是否正在读取配置。有没有我错过的设置? 我的请求有效负载也有 3 个变量和 3 个常量属性。我该如何定义它们?我已经评论了有效载荷以供参考。
【问题讨论】:
-
我刚刚将功能文件更改为这个并且它有效。但我想定义变量并使用它们。
Feature:login Background: * url 'https://staging.com Scenario: Login as User # epoch time * def time = (new Date).getTime(); Given path '/sso/authenticate' * request = {"enc_login_id":"demo@gmail.com","password":"gmail1213","timestamp":time,"type":"user","client":"gmail","encrypted":false,"source":"web"} When method post Then status 200 And def sessionID = response.session_id And print 'SessionID: ' , sessionID但为什么呢?