空手道标头示例未显示如何访问以外的配置值baseUrl。当我切换环境时(-Dkarate.env=qual作为运行命令的一部分传入),则baseUrl设置正确。
问题是,我想使用此处所示的其他配置值,但是当我运行测试时,它无法config.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)
Run Code Online (Sandbox Code Playgroud)
我的.feature文件karate-config.js在下面。
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)
Run Code Online (Sandbox Code Playgroud)
@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 |
Run Code Online (Sandbox Code Playgroud)
(类似的问题在这里,使用单独的headers.js:https://github.com/intuit/karate/issues/94)
请记住,所有的按键内返回的JSON对象karate-config.js将被注入变量,而不是其他。因此,您将无法引用config,但您一定可以引用apiKey。
我认为,如果您进行了简单的更改,事情就会开始起作用:
* def secretKey = apiKey
Run Code Online (Sandbox Code Playgroud)
另外,我认为您在方案的第一行中有问题,应该是:
* configure headers = { KeyId: '#(secretKey)', Accept: 'application/json' }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6601 次 |
| 最近记录: |