【问题标题】:Karate/Cucumber novice:The baseUrl in karate-config is not recognized空手道/黄瓜新手:karate-config中的baseUrl无法识别
【发布时间】: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 但为什么呢?

标签: testng karate


【解决方案1】:

很确定您的 karate-config.js 不在类路径中。

由于您是这一切的新手,请您开始一个新的项目,不要混合使用 TestNG 和 REST-assured。

只需使用原型,您就可以正常运行:https://github.com/intuit/karate#quickstart

【讨论】:

  • 嗨,彼得!我也面临同样的问题。 function { var config = { baseUrl : 'http://localhost:8080/api/v1' } return config; }Feature: Create Teams Background: * url baseUrl * def contextPath = '/admin/teams/create' Scenario: Verify that a new Team is successfully getting created Given path contextPath When request {"name":"Test-team","description":"Test","createdBy":"system"} And method post And header Accept = 'application/json' Then status 200 And print 'Response is: ', response
  • @AkhilSuseelan 我根本没有在读这个。如果可以,请遵循此过程:github.com/intuit/karate/wiki/How-to-Submit-an-Issue
【解决方案2】:

在上述情况下,Java 版本的问题仅是因为空手道不支持版本 1.8.0_101。所以只需更新 java 版本,它就会开始工作。

使用 java -version 检查 java 版本 它的版本是上面的一次用命令再次安装java: brew cask install java 最后java home路径应该随着更新java版本而改变 回显 $JAVA_HOME

更改基本配置文件上的 java home 导出路径,然后重新加载基本配置文件。

打开 base_profile 只需执行 vi ~/.bash_profile 并转到 java home export 然后更改 java 版本 然后执行 source ~/.bash_profile

【讨论】:

    【解决方案3】:

    我希望您使用像 eclipse 这样的 IDE。在这种情况下,首先创建一个 karate-config.js 文件..在任何文件夹中..转到包资源管理器窗口中的 eclipse 中的项目。 右键单击项目并转到构建路径。在项目中添加 karate-config.js 在构建路径中的文件夹。 (这会将 karate-config.js 文件添加到 java 编译器可以识别并编译该 JS 文件的类路径)

    就像升级你的java之后提到的@Ashok Kumar ..试试这个

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-05
      • 1970-01-01
      • 1970-01-01
      • 2018-12-10
      相关资源
      最近更新 更多