空手道标头示例不显示如何访问basUrl
以外的配置值。当我切换环境(传递-Dkarate.env=qual
作为run命令的一部分)然后basUrl
被正确设置。
问题是,我想使用这里所示的其他配置值,但是当我运行测试时,它无法访问配置。ApiKey
正确。相反,我得到了这个错误
html report:
file:/C:/bitbucket/karate-checkdigit-api/target/surefire-reports/TEST-features.checkdigitapi.VA.html
Tests run: 250, Failures: 0, Errors: 50, Skipped: 175, Time elapsed: 4.112 sec <<< FAILURE!
* def secretKey = config.apiKey(| XYZ | 2110974841 | 204 | Valid |) Time elapsed: 0.005 sec <<< ERROR!
java.lang.RuntimeException: no variable found with name: config
at com.intuit.karate.Script.getValuebyName(Script.java:323)
at com.intuit.karate.Script.evalJsonPathOnVarByName(Script.java:378)
at com.intuit.karate.Script.eval(Script.java:309)
at com.intuit.karate.Script.eval(Script.java:194)
at com.intuit.karate.Script.assign(Script.java:656)
at com.intuit.karate.Script.assign(Script.java:587)
at com.intuit.karate.StepDefs.def(StepDefs.java:265)
at ✽.* def secretKey = config.apiKey(features/checkdigitapi/XYZ.feature:6)
我的。功能
文件和空手道配置。下面是js
。
@regression
Feature: Checkdigit Algorithm API
Background:
* url baseUrl
* def secretKey = config.apiKey
* configure ssl = true
Scenario Outline: Testing XYZ algorithm
* configure headers = { KeyId: secretKey, Accept: 'application/json' }
Given path 'headers'
And param url = baseUrl
And params { customerId: '<custcode>', algoId: '<algo>' }
When method get
Then status <val>
Examples:
| algo | custcode | val | comment |
| XYZ | 2110974841 | 204 | Valid |
| XYZ | 7790011614 | 204 | Valid |
| XYZ | 5580015174 | 204 | Valid |
| XYZ | 2110974840 | 400 | expected check digit 1 |
| XYZ | 211097484 | 400 | not 10 digits |
| XYZ | 211097484x | 400 | not numeric |
function() {
//set up runtime variables based on environment
//get system property 'karate.env'
var env = karate.env;
if (!env) { env = 'dev'; } // default when karate.env not set
// base config
var config = {
env: env,
baseUrl: 'https://localapi.abc123.example.com/api/v1/validate/customerid',
apiKey: ''
}
//switch environment
if (env == 'dev') {
config.baseUrl = 'https://devapi.abc123.example.com/api/v1/validate/customerid';
config.apiKey = 'fake-1ba403ca8938176f3a62de6d30cfb8e';
}
else if (env == 'qual') { //Pre-production environment settings
config.baseUrl = 'https://qualapi.abc123.example.com/api/v1/validate/customerid';
config.apiKey = 'fake-d5de2eb8c0920537f5488f6535c139f2';
}
karate.log('karate.env =', karate.env);
karate.log('config.baseUrl =', config.baseUrl);
karate.log('config.apiKey =', config.apiKey);
return config;
}
(这里类似的问题,使用单独的headers.js
:https://github.com/intuit/karate/issues/94)
仅供参考,我的最终,正确工作XYZ。功能
文件现在看起来像这样。行给定路径“headers”
导致header信息潜入url,因此将其删除。
@regression
Feature: Checkdigit Algorithm API
Background:
* url baseUrl
* def secretKey = apiKey
* configure ssl = true
Scenario Outline: Testing XYZ algorithm
* configure headers = { KeyId: '#(secretKey)', Accept: 'application/json' }
Given url baseUrl
And params { customerId: '<custcode>', algoId: '<algo>' }
When method get
Then status <val>
Examples:
[...]
请记住,由karate-config.js
返回的JSON对象中的所有键都将作为变量注入,而不是其他。因此,您将无法引用config
,但您肯定可以引用apiKey
。
我想如果你做了这个简单的改变,事情就会开始起作用:
* def secretKey = apiKey
另外,我认为您在场景的第一行遇到了一个问题,应该是:
* configure headers = { KeyId: '#(secretKey)', Accept: 'application/json' }
我正在使用空手道v0.9.6,这是一个很棒的工具。我有一个 我空手道配置的一部分。js: 我正在使用。sh文件如下: 而且,它在v.0.9.6上长时间运行良好。但是,当我尝试升级到v 1.0或1.0.1时,a给出了一个错误: 我发现这个问题:https://github.com/intuit/karate/issues/1515 但这些例子并不适合我。我试着用“文件:”和空手道。属性['karat
我的API测试项目的工作,并已纳入空手道这样做。现在,我的要求是创建一个响应endpoint的服务器。所有这些都已完成,但我的要求是访问服务器功能中的空手道配置文件中定义的变量。我不能这样做。 例如:功能:示例服务器 场景:路径匹配('\variablevalue)**methodIs('get')) def响应=默认环境 注意:默认_env是空手道配置中的一个变量。js文件,并保存一些默认值。
在我们的测试功能(用于API测试)中,我们在后台创建测试用例所需的数据(例如:用户,他们的数据...)。我们希望在不同的模式下使用相同的测试功能。如何在后台设置数据?我的意思是我们如何为我们的测试功能使用“不同的”背景。我们希望运行相同的测试功能: > 在管理或非管理模式下,所以在后台我们需要创建一个用户帐户,然后生成一个访问令牌,然后使用该令牌为该用户添加一些数据;该令牌用于每个场景; 对于注入
我正在尝试使用空手道进行e2e测试,并已从最低设置开始。我想在用于测试,但karate报告该文件不是js函数,因此测试无法获取配置: 这是我的: 这是我的测试: 这是测试运行程序:
在空手道中,您可以通过发送json/list调用该功能 例如: 引发错误:路径:$,实际值:'',应为:'30e093da-c4e3-4ee0-b180-e5d0b4302d9f',原因:不是子字符串 步骤: 在日志检查功能中,我试图使用 日志检查功能步骤 我尝试了另一种方法,我把它分配给 我将发送json的另一种方法 步骤为logcheck.feature 例如: 错误抛出:com.intuit
如何在gatling模拟中运行多个空手道功能文件? 以下是我gatling模拟的代码片段: 我每次只能运行一个功能文件,如下所示: