问题标签 [karate]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
integration-testing - 在测试中部署要测试的微服务
也许这在测试框架中通常是不可能做到的,但是
我希望能够在测试本身中部署我正在测试的微服务。我看过 Citrus、RestAssured 和空手道,听过无数的演讲,阅读过无数的博客,但我从来没有看到如何完成第一阶段。似乎总是假设微服务是预先部署的。
karate - 是否可以在空手道中使用加密属性?
我有一个带有加密属性的 application.properties 文件:
我想在功能文件中使用解密的值,有点像:
通常 Spring-boot 处理解密这些属性,我可以使用
在我的步骤定义类中从application.properties
文件中获取属性。
我怎么能用空手道做到这一点?
karate - 空手道 API 测试 - 从 JSON 数组转换为字符串
我需要从GET
请求中读取一个 id 并将其POST
用于执行测试。我从 GET 检索到的 id 是来自以下表达式的数组形式:
我将此 ID 存储为变量:
当我在POST
操作中使用它时,我收到以下错误:
有没有一种方法可以执行 JSON.stringify() 等来将值转换为字符串或提取它并在POST
请求中更有目的地使用它
karate - 空手道 API 测试 - 在同一功能文件中重用不同场景中的变量
空手道是否支持一项功能,您可以在场景中定义变量并在同一功能文件中的其他场景中重用它。我尝试做同样的事情但得到一个错误。在同一功能文件中重用变量的最佳方法是什么?
错误:
java - 将自定义步骤定义添加到空手道框架
我需要从“复杂”响应标头中提取解析的字段,并在稍后的测试中使用该值。
似乎空手道中的“header”关键字设置为设置请求标头,而不是解析响应标头。
有没有办法添加自定义步骤定义来维护对场景变量存储的访问?看起来变量存储在StepDefs
类中是私有的,似乎没有办法轻松扩展它。
karate - 在空手道 BDD 框架中禁用跟随重定向?
我的应用程序流程的一部分重用了旧的登录服务。这个旧的登录服务使用带有一个包含我必须捕获并用作身份验证代码的查询参数302
的标头的重定向。Location
现在,空手道框架正在帮助我将我转发到Location
标题中指定的位置。我怎样才能禁用它,以便我可以自己捕获这些值?
rest - 在空手道 DSL 中,一个“?” 在给定路径变量中被转换为请求消息中的“%”,我该如何解决这个问题?
在Karate DSL中,我有以下场景:
特点:测试
背景:* url baseUrl
场景:测试
给定路径'serviceRequests/tasks?view=short&page=1&size=25
使用GET方法,我的状态为 200
我收到404的响应,因为这是空手道正在转换下面的路径变量 a 的内容。注意到“任务”了吗?字符串变为“任务%”。为什么会发生这种情况,我能做些什么来解决它?
GET http://ver-01-shared-services-service-request-service.ver.cloud.ds.gehc.net/serviceRequest/v1/serviceRequests/tasks **%**3Fview=short&page=1&size=25
karate - 定义一个变量来设置数组的长度失败但断言和打印工作
def count = * print response.teams[0].teamMembers.length
抛出以下错误
com.jayway.jsonpath.PathNotFoundException:应在路径 $['teams'][0]['teamMembers'] 中找到具有属性 ['length'] 的对象,但找到了 'net.minidev.json.JSONArray'。
根据 JsonProvider:'com.jayway.jsonpath.spi.json.JsonSmartJsonProvider',这不是一个 json 对象。
print response.teams[0].teamMembers.length
和assert response.teams[0].teamMembers.length == 9
工作得很好。
非常感谢这里的任何帮助。
rest - 在空手道 DSL 框架中,我们如何添加自定义步骤定义以将其功能扩展到 REST 功能之外?
我理解空手道背后的理念是不必添加自定义步骤定义。但是,我们在项目中执行的 REST API 测试更加集成,因此我们必须验证 MongoDB 集合、ActiveMQ 和 SQL Server DB 中的 POST 响应。无论如何,是否可以轻松添加自定义步骤定义以将空手道 DSL 框架扩展到其 REST 功能之外?我尝试下载源代码并将其作为 Maven 项目导入,但遇到了许多依赖问题。
karate - 空手道 DSL 的嵌入式表达式不会替换 json 中的值
所以基本上我只是从空手道测试框架开始,并且可能缺少一些非常简单的东西,但我似乎无法正确解决嵌入式表达式。如果我有一个这样的功能文件,那么它可以通过几种方式做同样的事情:
然后当它到达打印行时,我得到这样的输出,其中值为空 js 对象 {}
16:43:28.580 [main] INFO com.intuit.karate - [print] {"createDateTime":{},"expiryDateTime":{}}16:43:28.586 [main] 调试 com.jayway.jsonpath.internal。 PathCompiler - 使用缓存路径:$true[]
另外,我可以看到它似乎在为第一个打印语句设置路径,如下所示:
16:32:30.612 [main] DEBUG com.jayway.jsonpath.internal.CompiledPath - 评估路径:$['createDateTime'] 16:32:30.613 [main] DEBUG com.jayway.jsonpath.internal.JsonReader - 设置路径 $ ['createDateTime'] 新值 2017-09-14T16:32:30.566 16:32:30.629 [main] DEBUG com.jayway.jsonpath.internal.CompiledPath - 评估路径:$['expiryDateTime'] 16:32:30.629 [ main] 调试 com.jayway.jsonpath.internal.JsonReader - 设置路径 $['expiryDateTime'] 新值 2017-09-14T16:37:30.621
谁能向我解释为什么我无法将实际日期插入到 testRequest 中?
谢谢你。