首页 > 解决方案 > 使用 karate.call 传递多个参数

问题描述

我试图在第二个功能文件中调用 API,从第一个功能文件传递参数。说从第一个 API 响应返回的令牌和当前页面值。这些必须作为第二个 API 的参数传递

   * def activeDetails =
    """
      function(times){
        for(i=0;i<=times;i++){
          karate.log('Run test round: '+(i+1));
          karate.call('getActiveRouteDetails.feature', { token: token, currentPage: i });
        }
        java.lang.Thread.sleep(1*1000);
      }
    """
* call activeDetails totalPages

在我的第二个功能中,我能够打印传递的值,但无法传递参数。你能帮我么

And print currentPage
And print token
And param pageNumber  = '#currentPage'
And param token = token

标签: automationcucumberkarateweb-api-testing

解决方案


当您在 JavaScript 块中时,会有一个细微的差别。请阅读:https ://github.com/intuit/karate#karate-expressions

进行此更改:

var result = karate.call('examples/getDetails.feature', { token: token, currentPage, i });

并且请不要使用变量名current page,如果需要帮助,请向 JavaScript 程序员朋友寻求帮助。

另请注意,最佳做法是尽可能避免 JS 代码和循环:https ://github.com/intuit/karate#loops


推荐阅读