您好,空手道社区希望您能帮助我解决这个问题,我正在尝试为我的测试案例创建一些证据,因为我工作的组织既不接受黄瓜也不接受空手道报告。
当我的javaScript函数使用空手道的karate.prevRequest.body功能时,问题就会发生,这会带来一个空值,但我已经在功能级别尝试过了,并且工作得很好,我真的不知道发生了什么,我希望有人知道我做错了什么。
这里是我从特性和javaScript得到的代码和响应。
从要素
* def requestBody = karate.prevRequest.body
* def requestString = new java.lang.String(requestBody, 'utf-8')
* print requestString响应
11:09:15.800 [ForkJoinPool-1-worker-3] INFO com.intuit.karate - [print] {"enrollmentTimeStamp":"2021-03-26T11:09:14","customer":{"customer":"2021032611306","fullName":"Elizabeth Chase Olsen"}}
同一功能下的javaScript
And configure afterScenario =
"""
function() {
if( karate.prevRequest != null){
var requestBody = new java.lang.String( karate.prevRequest.body , 'utf-8');
}
var requestMethod = karate.prevRequest.method;
var requestHeaders = karate.prevRequest.headers;
var request = requestMethod + "\n" +requestHeaders+ requestBody;
karate.log(requestBody);
var reportResults = Java.type('Features.reportResults').writeResultsToFilePretty(requestMethod, requestHeaders, requestBody, response, karate.info.scenarioName, karate.info.featureFileName);
}
"""响应:
11:09:16.040 [ForkJoinPool-1-worker-3] ERROR com.intuit.karate - javascript function call failed: java.lang.NullPointerException
11:09:16.043 [ForkJoinPool-1-worker-3] ERROR com.intuit.karate - failed function body: function() {
if( karate.prevRequest != null){
var requestBody = new java.lang.String( karate.prevRequest.body , 'utf-8');
}
var requestMethod = karate.prevRequest.method;
var requestHeaders = karate.prevRequest.headers;
var request = requestMethod + "\n" +requestHeaders+ requestBody;
karate.log(requestBody);
var reportResults = Java.type('Features.reportResults').writeResultsToFilePretty(requestMethod, requestHeaders, requestBody, response, karate.info.scenarioName, karate.info.featureFileName);
}
11:09:16.044 [ForkJoinPool-1-worker-3] WARN com.intuit.karate - afterScenario hook failed: javascript function call failed: java.lang.NullPointerException发布于 2021-03-27 02:36:08
首先,请切换到1.0 -这很可能已经修复或工作得更好:https://github.com/intuit/karate/wiki/1.0-upgrade-guide
第二:如果您想要自定义报告,并且愿意深入研究Java代码,请参阅以下内容:https://stackoverflow.com/a/66773839/143475
第三,也许这将为您提供您的组织所要求的“证据”,但同样,您应该愿意执行一些自定义代码:https://twitter.com/KarateDSL/status/1338892932691070976
第四,有一种叫做RuntimeHook的东西是为高级用户设计的,所以如果你了解如何使用它,你可以获得空手道发出的每一个单独的HTTP请求的详细信息。
最后,如果上面的工作都没有完成,这意味着您应该为空手道贡献一些代码:)
https://stackoverflow.com/questions/66821727
复制相似问题