我正在使用现有的Testng + Restassured设置尝试空手道。 我是Karate和Cucumber的新手。
我正在尝试使用默认用户和密码登录我的服务。 这里有很多挑战,因为我不明白控制当前是如何流动的。
我有以下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个常量属性。我该如何定义它们?我已对有效载荷进行了评论以供参考。
答案 0 :(得分:1)
非常确定您的karate-config.js
不在类路径上。
由于您对这一切都不熟悉,我请您请开始一个新项目,不要混合使用TestNG和REST保证。
只需使用原型即可开始运行:https://github.com/intuit/karate#quickstart
答案 1 :(得分:1)
希望您使用的是类似eclipse的IDE。在这种情况下,请首先在Package Explorer窗口中的eclipse中的任何文件夹..go中创建一个karate-config.js文件.. 右键单击项目并转到构建路径。将文件夹添加到您的项目中,其中karate-config.js在构建路径中。 (这会将karate-config.js文件添加到类路径中,java编译器可以从该路径识别此JS文件并进行编译)
像@ Ashok Kumar一样,在升级Java后也提到过。尝试此
答案 2 :(得分:0)
在上述情况下,仅1.8.0_101版本不支持空手道的Java版本问题,因此只需更新Java版本即可开始工作。
使用java -version检查Java版本 它的版本是上面的版本,一旦使用命令再次安装java: 酒桶安装Java 最后,java home路径应随着更新的Java版本而改变 回显$ JAVA_HOME
更改基本配置文件上的java home导出路径,然后重新加载基本配置文件。
打开base_profile 只需执行 vi〜/ .bash_profile 并转到Java home导出,然后更改Java版本即可。 然后来源〜/ .bash_profile