Karate/Cucumber novice:The 空手道配置中的 baseUrl 无法识别
Karate/Cucumber novice:The baseUrl in karate-config is not recognized
我正在使用现有的 Testng+Restassured 设置尝试空手道。
我是空手道和黄瓜的新手。
我正在尝试使用默认用户名和密码登录我的服务。
这里对我来说有很多挑战,因为我不了解当前的控制流程。
我有以下空手道-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 evaluation failed: baseUrl
我不知道这里是否正在读取配置。有没有我错过的设置?
我的请求负载也有 3 个变量和 3 个常量属性。我该如何定义它们?我已经评论了有效负载以供参考。
很确定你的 karate-config.js
不在类路径中。
由于您是这一切的新手,我请您开始一个新项目,不要混合使用 TestNG 和 REST-assured。
只要使用原型,你就会全力以赴 运行: https://github.com/intuit/karate#quickstart
在上述情况下,java 版本仅存在问题,因为 1.8 版不支持空手道。0_101.So 只需更新 java 版本即可开始工作。
使用 java -version 检查 java 版本
它的版本是上面一次使用命令再次安装 java :
brew cask 安装 java
最后 java 主路径应该随着更新 java 版本而改变
回声$JAVA_HOME
更改 java 基本配置文件的主页导出路径,然后重新加载基本配置文件。
打开base_profile
只需执行 vi ~/.bash_profile 并转到 java home export 然后更改 java 版本
然后做 source ~/.bash_profile
我希望你使用的是像eclipse.In这样的IDE这种情况首先创建一个空手道-config.js文件..在任何文件夹中..转到包中eclipse中的项目探险家 window 。
右键单击该项目,然后转到构建 path.add 空手道-config.js 在构建路径中的项目中的文件夹。
(这会将 karate-config.js 文件添加到类路径中,java 编译器可以从中识别此 JS 文件并进行编译)
就像升级你的 java 后提到的@Ashok Kumar ..试试这个
我正在使用现有的 Testng+Restassured 设置尝试空手道。 我是空手道和黄瓜的新手。
我正在尝试使用默认用户名和密码登录我的服务。 这里对我来说有很多挑战,因为我不了解当前的控制流程。
我有以下空手道-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 evaluation failed: baseUrl
我不知道这里是否正在读取配置。有没有我错过的设置? 我的请求负载也有 3 个变量和 3 个常量属性。我该如何定义它们?我已经评论了有效负载以供参考。
很确定你的 karate-config.js
不在类路径中。
由于您是这一切的新手,我请您开始一个新项目,不要混合使用 TestNG 和 REST-assured。
只要使用原型,你就会全力以赴 运行: https://github.com/intuit/karate#quickstart
在上述情况下,java 版本仅存在问题,因为 1.8 版不支持空手道。0_101.So 只需更新 java 版本即可开始工作。
使用 java -version 检查 java 版本 它的版本是上面一次使用命令再次安装 java : brew cask 安装 java 最后 java 主路径应该随着更新 java 版本而改变 回声$JAVA_HOME
更改 java 基本配置文件的主页导出路径,然后重新加载基本配置文件。
打开base_profile 只需执行 vi ~/.bash_profile 并转到 java home export 然后更改 java 版本 然后做 source ~/.bash_profile
我希望你使用的是像eclipse.In这样的IDE这种情况首先创建一个空手道-config.js文件..在任何文件夹中..转到包中eclipse中的项目探险家 window 。 右键单击该项目,然后转到构建 path.add 空手道-config.js 在构建路径中的项目中的文件夹。 (这会将 karate-config.js 文件添加到类路径中,java 编译器可以从中识别此 JS 文件并进行编译)
就像升级你的 java 后提到的@Ashok Kumar ..试试这个