空手道/黄瓜新手:无法识别karate-config中的baseUrl

时间:2018-02-21 10:04:16

标签: testng karate

我正在使用现有的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个常量属性。我该如何定义它们?我已对有效载荷进行了评论以供参考。

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