Karate ';自我';JSON文件中的验证表达式(空手道框架)

关于“自我”验证表达式,我有两个问题: 问题1 在我的特写中我有 * def isStatus = function(s) { return s ==='SUCCESS' || s ==='ERROR' } And match response[0] contains { status: '#? isStatus(_)' } 我希望对每个响应项都这样做,例如(*而不是0): 但它不起作用?有什么不对劲吗 没有js函数,我无法做到这一点,如本例所示: * def date = { month

Karate 从场景内部调用功能文件时失败的测试不会显示哪个场景(在被调用的功能中)失败

我通过在场景中调用功能文件来重用它。上下文是,我想要在common.feature文件中测试我的所有端点的一些公共特性。然后在特定端点的功能文件(endpoint.feature)中,我首先调用场景中的common.feature文件,然后调用特定于该端点的其他场景 我的common.feature文件如下所示: Feature: ... Scenario: scenario 1 Scenario: scenario 2 Feature: ... Scenario: test

Karate 空手道阵法场成为目标

我有一个很奇怪的问题 我想将两个列表附加到一个列表中,但似乎空手道不支持此函数,所以我编写了一个JS函数 function(lists){ var arr = [] for each (var list in lists){ for each (var item in list){ arr.push(item); } } return arr; } 我编写这个功能文件进行测试: Feature: Sce

如何使用karate.set()在json中添加新密钥

您好,我正在尝试使用karate.set向json添加新的键和值,但无法将异常作为无效的varibale名称,下面是我的代码: Backgroung: * def myjson = {name: 'test', start_date: '27-04-2017'} * def localDateTime = Java.type("java.time.LocalDateTime").now() Scenario: * string endDate = 'myjson.end_date' * de

Karate 如何在比较两个JSON时列出所有差异

这是我的密码 *def aJson=[{foo1:2},{bar1:2},{foo2:null},{bar2:a}] *def bJson=[{foo1:4},{bar1:2},{foo2:null},{bar2:b}]; *匹配aJson==bJson 这是版本为0.9.1的代码的结果,该版本为此提供了错误修复。 据我所知,不可能同时获得foo1和bar2错误的信息。这是不受支持的。这对于测试web服务的团队来说从来都不是问题,因为您只想检测增量。如果您觉得这是一个问题,请提供代码或使用其他

Karate 如何在空手道中参数化特征文件

我试图在javascript函数中调用一个功能文件,如下所示 sample.js: var authToken= function(urlparam1){ var config = {urlparam: urlparam1} var result = karate.callSingle('classpath:test1.feature',config); karate.log('accesstoken in js file:', result.accessToke

空手道测试中的config json对象在Karate-config.js脚本中是不可变的吗?

在VSCode中调试时,我附加了一个断点的映像,您可以看到,当我向varconfig对象添加data节点时,karate.log(…)console输出显示我没有在config对象中放置data配置,但是调试器显示data变量已经设置,并且在堆栈的作用域中 我做错什么了吗?我希望print语句显示config.data节点的值 这是我的调试器的屏幕截图(请参见图像上的两个红色箭头以及调试器堆栈上的数据值):JSON对象中的Yes属性是可变的karate config.js首先运行,因此日志显示为

Karate 空手道:尝试让全局标题工作

我正在尝试设置一个框架来运行Graphql调用,并创建和运行E2E环境 到目前为止,我已经完成了以下设置,但我似乎无法使标题部分正常工作。我已经成功地为每个请求设置了身份验证,但当它为每个请求登录时,它并没有真正按照预期工作 我想执行以下步骤: 运行登录测试(不同用户名有效/无效) 运行注销测试(确保令牌已删除) 然后使用正确的用户登录并提取“set cookie”头(全局用于所有未来请求) 我试图使用以下方法: Karate-config.js karate.callSingle('cla

Karate 空手道:将JSCH类与空手道框架集成

我95%的自动化框架都是用空手道制作的,效果很好。很少有功能需要检查显示在应用程序日志(而不是Json响应)中的中间结果。我编写了一个shell脚本,在从Postman手动发送请求后,在Linux机器上验证应用程序日志。我使用eclipse中的JSCH库调用这个脚本 有没有什么方法可以让我直接从空手道发送请求,然后调用我的JSCH类进行验证,从而避免手动发送请求 谢谢, Abhi看起来您不知道空手道具有出色的Java互操作性 请阅读: 作为第二个选项:您可以使用调用任何OS命令,它甚至将以字符串

Karate 我们能否在一个';如果';空手道宣言?

如果条件为true,我想执行多个语句。我想知道在Intuit空手道框架中是否以及如何实现 在空手道文档中,我发现如下示例,如果满足下面列出的if条件,则所有示例都只有一条语句需要执行 if (env == 'dev') karate.configure("ssl", true) if (responseStatus == 200) karate.call('delete-user.feature') if (responseStatus == 404) karate.ab

Karate 空手道能自动将字符串解析为xml吗?此字符串来自从DB读取值

所以我使用这里提供的readRow方法从DB读取值 这里的一列具有xml值 当我试图直接从一个xml节点获取值时,我得到一个错误 无法转换为映射:[类型:字符串,值:choice1Choice2] *def DbUtils=Java.type('Java.DbUtils') *def db=new DbUtils(dbConfig) *def query=“从(NOLOCK)中选择*,其中id=”+id+“” *def fetchRows=db.readRow(查询) *打印“fetchRows

Karate 空手道UI-设置cookie()时cookie域无效

我正在使用为API测试实现的现有登录功能为功能文件中的UI测试设置cookie。类似于空手道文档中描述的“混合方法”以及本主题中的- 我的功能文件是: Feature: UI one time login test Background: # I am using the existing login functionality. I perform a onetime login in karate-config and store the cookie in a config variab

Karate url中的空手道框架符号编码

我有这个: Background: * url 'http://localhost:15672/api/exchanges/%2F/my_exchange' Scenario: Given path 'publish' 这里的问题是url被解析为: http://localhost:15672/api/exchanges///my_exchange/publish 而不是: http://localhost:15672/api/exchanges/%2F/my_exchang

Karate 自定义空手道HTML报告的目录

我正在研究将HTML报告组织到默认的target/surefire报告以外的目录中 我在文档中读到,Runner有一个现有的reportDir()方法。我可以将此方法用于JUnit5测试吗?如果没有,还有其他方法吗 我遇到了一个类似的问题,但我没有使用可执行的jar版本,因此接受的答案将不适用 任何帮助都将不胜感激。请开始尝试1.0 RC版本:-对RunnerAPI以及如何控制报表输出目录进行了更改 并且没有理由为基于JUnit的测试定制此选项,该选项只是为了方便开发人员: 还要注意的是,在1.

Karate 使用空手道向json中添加新的键值对

我的有效载荷如下所示: { "override_source": "DS", "property_code": "0078099", "stay_date": "2018-11-26T00:00:00.000000", "sku_prices": [ ], "persistent_override": false } 有一个数组dblist[“2”,“3”],它由1到4的数字组成。基于列表中的元素,我想将键值{“sku价格”:“1500”,“sku代码”:“2”}添加到

Karate 空手道0.9.1未生成cucumber.json,该文件用于cucumber报告

当空手道0.6.1与黄瓜一起使用时。它正在代码中指定的路径中生成测试结果输出到cucumber.json文件 然后使用MasterThink生成Cumber报告 @RunWith(Karate.class) @CucumberOptions(monochrome = true, features = "SampleFeature.feature", plugin = {"pretty", "html:target/site/cucumber-pretty", "json:target/cu

Karate 空手道正则表达式给出错误-原因:不是字符串

我编写了一个小场景,需要将json键值检查为任意整数。这是我在空手道DSL中的测试步骤: When method get * print response Then match response contains { numberOfElements: '#regex [0-9]+' } 运行时,我得到一个错误: 路径:$.numberOfElements,实际值:8,预期值:“#regex[0-9]+”,原因:不是字符串✽.然后匹配响应包含{numberOfElements:'#regex[

Karate 内容类型=';应用程序/x-www-form-urlencoded';在请求中更改为内容类型:application/json;在空手道版本0.9.2中

当我将内容类型='application/x-www-form-urlencoded'作为头发送时,它被更改为内容类型:application/json;在空手道版本0.9.2中。 在空手道版本0.7.0中,它仅作为内容类型='application/x-www-form-urlencoded'发送 Given url "https://foo.bar.buzz" And header Content-Type = 'application/x-www-form-urlencod

Karate 空手道框架:#notnull和#present在响应为空时不起作用

我的验证是验证orgId是否出现在响应中,并且orgId应该包含一些值 我得到的回应是 状态代码200,响应正文为空 现在我有下面的实现 Then match $.orgId == '#present' Then match $.orgId == '#notnull' 在这种情况下,代码通过,理想情况下应该失败,因为响应主体为空,并且响应中不存在orgId。 我的问题是,为什么代码会通过#present和#notnull,即使响应主体是空的您肯定遗漏了什么。在一个全新的场景中尝试一下,看看它是

Karate 我们如何使用相同的runner类运行多个功能文件和所有功能文件(取决于需求)? 我有5个功能文件我想运行一些功能文件取决于使用一个runner类的要求是否可能,如果可能,如何

1) 您可以在“空手道选项”中运行所需的功能添加路径到功能: @RunWith(空手道类) @KarateOptions(features=“classpath:animals/cat/required.feature”) 公共级CATSPSTRUNNER{ } 2) 您可以运行所需的功能或场景,并在“空手道选项”中向功能或场景添加标记: @RunWith(空手道类) @KarateOptions(tags=“@someTag”) 公共级CATSPSTRUNNER{ } 3) 您还可以将方法

Karate 请参考场景大纲示例中定义的变量 功能:测试类型 背景: *url主机 *def名称='测试名称' *def label=名称 场景概要:测试2 给定url homeLinks.groupTypesUrl 和标头{租户:#(租户ID),授权:#(authToken)} *def名称= *def说明= *def标签= *json data=read('path/to/file/create\u group\u type\u request.json') 并请求数据 当方法发布时 然后状态400 示例: |名称|标签|说明| |“\u0000”|“标签”|“说明”| |#(名称)|“\u0000”|“说明”|

我需要引用示例映射中定义的全局名称。如何获得参考资料 当我试图喜欢上面的代码时,出现Javascript求值错误。是的,示例不支持JS求值和变量。使用表单并在其上循环调用第二个功能: 或者,您可以通过在后台初始化表来尝试使用动态场景大纲: Feature: Test Type Background: * url host * def name = 'test_name' * def label = name Scenario Outline: Test 2

Karate 空手道DSL:获取连接超时错误

我正在致力于自动化中国服务器上托管的API,当我发送请求时,它会抛出超时异常(org.apache.http.conn.HttpHostConnectException) 我的功能文件: Background: * url 'http://myurl' * configure connectTimeout = 500000 Scenario: Get Client details Given path '/clients' And header Authorization =

Karate 空手道赛后的场景/场景大纲会失败吗

我们能否在空手道赛后的场景/场景大纲中失败,因为空手道中没有软断言 我希望我的空手道代码运行完整的场景,最后它应该报告什么是失败和通过 解决方法:-1。我在afterScenario中调用了自己的Java类,尝试了空手道记录器,但它并没有在空手道报告中报告。 2.在afterScenario自己的Java类中尝试使用Assert语句,但在空手道报告中未显示失败状态 围绕1:- **背景中的场景之后** * configure afterScenario = """ function(){ var

Karate 空手道如何循环数组和更新路径参数

我需要在运行空手道测试后进行清理,并为我创建的所有对象调用清理端点。 类似于: for all objects i created: invoke rest endpoint path/object.id 我跟着 还检查了 它们允许在请求中传递param,但不允许在路径param中传递param。我试着做: def result = call read(clean-up.feature) ids 但是这失败了,因为clean.feature需要两个参数path和id Give

Karate 针对大型动态响应的断言

我有一个非常大的响应数组,我想断言它,但不知道它的顺序。我有一个带有预期响应值的变量,所以我可以进行一个巨大的比较,但是我无法加载整个响应并同时将其与整个预期响应变量进行比较 * def obligationsQuery = Java.type("tests.account.sql.Obligations").getObligations(division, account) * def getObligations = db.readRows(obligationsQuery)

Karate 空手道用户界面测试

我当时正试图用UI应用程序的空手道测试框架进行POC。 我们使用的是Chrome浏览器。我们需要以匿名模式测试应用程序(或者每次都需要清除缓存和历史记录才能运行测试) 在匿名模式下运行应用程序时,我们应该使用哪些驱动程序类型选项。您不必担心,因为空手道将在新的--用户数据目录中启动每个Chrome实例。如果你真的想要,你可以定制它(参考文档) 而作为命令行选项传递的--incognito将执行您想要的操作。在驱动程序设置中查找addOptions。您无需担心,因为空手道将在新的--用户数据目录中

Karate 在空手道中进行轮询后,有没有一种方法可以断言请求并使其失败?

我有一个请求,如果请求正在处理中或已通过,我将在响应参数中得到处理或提交。 我能够轮询并获取状态是否为“正在处理”或“已提交”,但在此之后,如果在轮询5次后仍无法获取预期状态,则我无法拒绝请求。 在某些重试没有提供预期响应后,我如何才能使请求失败?答案在您的问题中 我假设您正在使用js函数进行轮询, 如果是这样,您可以从中添加布尔值返回值,如果您的条件未满足返回值为假,或者如果条件满足返回值为真,则断言从要素文件返回的值 * def pollingFunc = """ function(x) {

Karate 在空手道中-从另一个功能文件调用功能文件以及变量值

很抱歉,这个问题似乎是重复的,但确实让我很困扰 我正在尝试从另一个要素文件调用一个要素文件以及变量值。而且根本不起作用 下面是我正在使用的结构 我的请求json具有变量名文件名:InputRequest.json { "transaction" : "123", "transactionDateTime" : "#(sTransDateTime)" } 我的功能文件1:ABC.Feature @tag1 *

Karate 空手道报告及;空手道日志具有场景名称和测试数据

我有一个功能,它有62个不同的测试数据,在场景大纲+示例的帮助下,所有这些测试都在执行中 Examples: |elements| |1| |2| |3| ... |62| 运行后,空手道报告的标题中只有功能名称。有没有办法,我们也可以将测试数据附加到标题中?在报告和日志中非常需要它,因为查找故障有点棘手,因为有许多服务正在并行运行 当前报告: 预期报告: 这太容易了,只是想出来了。它只需要在场景名称中添加参数名称 @debug Scenario Outline: Get forec

Karate 用于验证json don';行不通

我正在尝试打印以下内容: * print response.requests[?(@.friendlyId == '#(ORID)')] where ORID is: * def temp2 = response.teams[?(@.name == '<Name>')].requestedResources[0].resourceRequestFriendlyId * def ORID = temp2[0] *打印响应.请求[?(@.friendlyId='#(ORID)]

[karate][standalone]错误:无法找到或读取文件

我只使用最新的独立空手道jar在配置了JRE的docker容器上测试我的API,我没有任何Java代码 目前在我的一个功能中,我有这样一个:read('file.json'), 而且,当资源文件与功能文件位于同一目录时,它可以正常工作。我知道建议这样做 但如果我还想有一个包含所有资源文件的中心目录,以避免重复, 即使使用此命令,它也不起作用: read('classpath:directory/file.json') 错误如下: “[com.intuit.karate.exception.kar

Karate 忽略和呈现是同一件事吗?

在什么情况下,我想使用#ignore而不是#present,反之亦然?还是完全相同 我第一次读到这些文件时,我以为下面的内容会通过,但事实并非如此。编辑添加:这在空手道0.9.0中失败,但在0.8.0中通过 * def foo = {a: 1} * match foo == {a: 1, b: "#ignore"} 这些确实通过了: * def foo = {a: 1} * match foo == {a: 1, b: "##ignore"} * match foo == {a: 1, b:

在karate-config.js中可以有两个baseURL吗?

我有一个场景,我将与其他产品进行集成测试。所以我有两个URL,每个URL都有单独的授权令牌。在karate-config.js中是否可能有两个BaseURL?如果有,我们如何在功能文件中访问它们 karate-config.js if(env == 'pre-prod') { config.baseUrl='url1' } headers.js function() { var authheaders = {}; switch(baseUrl){ ca

Karate 编辑(更新、删除)空手道中的一个标题

我有一个.js文件中的标题,我正在使用 * configure headers = read('classpath:services/Headers/distheader.js') 问题1 如何在运行时使用场景数据编辑此文件中的一个标题? 我尝试设置*标题'xyz'='value',但它没有编辑它 问题2 如果我想删除其中一个标题,怎么可能 因此,90%的场景都是“快乐路径”,并且配置了标题 现在,您需要一些场景来增加(或减少)标题。一个选项是为这些场景硬编码标题,请注意,您可以执行*c

Karate 在空手道中运行单个场景

要测试空手道中的特定功能,请运行以下命令: mvn测试-Dkarate.options=“classpath:myfeature.feature” 有没有一种方法可以运行定义到功能中的单个场景 谢谢, Lorenzo是的,您可以通过标签: 还请注意,您可以按名称运行场景,例如,如果名称为“first”: 如果您使用IntelliJ,您可以右键单击并执行上述操作 编辑:空手道现在支持使用行号,例如一些。功能:42,因此它将只调用第42行的场景或大纲示例-这是专为IDE-s和开发人员模式设计的,使用

是否有类似call karate.callSingle()的函数在执行结束时调用功能文件?

使用karate.callSingle()我能够创建一些跨不同功能使用的全局资源。我想在每次自动化运行结束时删除这些资源。是否有类似于karate.callSingle()的函数,以便我可以使用该函数调用功能文件(此功能删除所有全局资源),并且此功能文件将在每次自动化结束时执行。这在并行执行中也会很有帮助。通常,最好在开始时依赖钩子,因为钩子有可能在最后一次失败,或者测试套件没有完成 实现这一点很容易,只需在并行运行程序的测试运行结束时使用Java,与此处生成cucumber报告的方式非常类似:

Karate 我得到了SSL握手问题如何禁用空手道SSL

当我试图访问一个安全端点时,即使在使用以下空手道方法禁用SSL之后,我也会遇到SSL握手异常 选项1)在功能文件中声明了以下内容 *配置ssl=true 选项2)在karate-config.js中声明了以下内容 configure('ssl',{trustAll:true}); (或) karate.configure('ssl',true) 例外情况: javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorEx

Karate 带嵌入式表达式的空手道打印json

如果嵌入表达式中有^^,则print不能很好地与嵌入表达式配合使用。更换后如何打印实际值 * def x = [{x: 'x1'}, {x: 'x2'}] * def y = {y: '#(^^x)'} * print y 这会打印出来 {y: '#(^^x)'} 但我想打印的是 {y: [{x: 'x1'}, {x: 'x2'}]} 你看起来很困惑。^快捷方式是为在匹配语句中使用而设计的 正常地这样做,您将得到您所期望的: * def y = { y: '#(x)' } * print

Karate 在功能空手道Soap API的背景中声明全局变量

我正在使用空手道来提供SOAP API服务。如何声明全局变量??正如您可以在下面的功能文件中看到的那样?打印响应后,我有变量名def ourSession=/Envelope/Body/LoginReturn我正在下一个场景中使用此变量(ourSession),但它失败了?但这不是全球性的。 那么如何将“ourSession”声明为全局变量??所以我可以用在其他场景中? 我们将非常感谢您的帮助。请看一下我下面的功能文件 Feature: SOAP calls to the follow

Karate 如何使用[*]JSONPath通配符来检索数组值

我试图从响应中检索animalId值。数组是动态的,因此我尝试使用def animalIds=response.animals[*].animalId从数组中检索animalId值 答复: { "animals": [ { "animalId": "1234565", "animalName": "Tom" }, { "animalId": "1234567",

Karate 'KeyId:secretKey'和'KeyId:'#(秘密)和#x27;`?

关于这张票我有个问题 两者的区别是什么 KeyId:secretKey, 及 KeyId:'#(secretKey)? 是否可以在消息中不向def分配out的情况下使用apiKey?喜欢 *打印“此项目中的密钥为#apiKey” 谢谢你你问了三个问题: a) 请阅读: b) 请阅读: c) 请阅读: 例如: * def val = 'bar' # correct * def temp = { foo: '#(val)' } # wrong * def temp = { foo: val }

Karate 当使用空手道版本0.9.5时,使用什么来代替Object.keys和hasOwnProperty?

请使用-返回字符串的JSON数组 现在你想做什么就做什么 另请参见:对不起,我不想在理解您的代码时伤脑筋。我把它留给其他人,除非你能简化它并解释你想要实现什么。我创建了一个功能文件,其中只包含js函数,我们的大部分代码都依赖于这些函数,但在升级空手道后,我遇到了上述错误。好的,看看我的答案。如果你想要一个更有用的答案,问一个更有用的问题 * def a = """ function(ths,tsa,hcia) { karate.log(JSON.stringi

Karate 通过空手道框架禁用Chrome密码管理器

尝试选择正确的chrome选项组合,以在传递登录表单后禁用恼人的密码管理器弹出窗口 以下是我如何创建驱动程序: 功能:驱动程序初始化 背景: *配置重试={计数:5,间隔:3000} 场景概要:使用 *def配置= *set config.showDriverLog=true *配置驱动程序=config *司机室https://google.com' *最大化() *retry().waitUntil(“document.readyState==“complete”) 示例: |配置| |

Karate 空手道框架中RESTAPI的NTLM认证

有没有人尝试过在我可以参考的空手道框架中实现NTLM身份验证?当我尝试构建测试并通过头参数时,我遇到401授权问题 @BeforeClass public static void before() { System.setProperty("http.auth.ntlm.domain", "***"); System.setProperty("jcifs.smb.client.domain", "***"); System.setProperty("jcifs.smb.c

Karate 空手道可以用相对路径而不是绝对路径从类路径之外读取文件吗

我正在尝试读取karate-config.js的属性文件。当我从本地提供绝对路径,但当我提供相对路径时,它工作。它不起作用。有办法吗?谢谢 var config=karate.read(“文件:/repo/tests/utils/al_dev.json”);--这不管用 var config=karate.read(“文件:~/repo/tests/utils/al_dev.json”);--这不管用 var config=karate.read(“文件:/Users/user1/IdeaPro

Karate 如果url为空,如何跳过空手道测试

当url为空时,我想跳过空手道测试执行。 目前,在Jenkins执行过程中,如果未通过karate.env,我不会在karate-config.js中设置url/domainName。在这种情况下,由于url/主机名为空,我的空手道测试用例失败。 如果值未在karate.env系统属性中传递,我希望跳过所有的空手道测试执行。 请建议我如何实现上述目标。 谢谢这不受支持。您可以尝试钩子,但API将来可能会更改:我在“后台”中尝试了*eval if(karate.env=='NoUrl')karat

Karate 空手道格特林中如何每秒加载更多请求

我正在尝试重用空手道脚本,并使用gatling执行负载测试。定义的场景是每秒加载50个用户,持续10秒。(加载测试500个用户)但是,gatling报告中每秒的请求数不超过20个。如果我做错了什么,请告诉我。 执行空手道脚本的ExampleTest.java代码 //package examples; import com.intuit.karate.Results; import com.intuit.karate.Runner; import static org.junit.jupite

Karate 如何从空手道dsl api响应中获取相关id?

我是空手道dsl新手。我想从响应详细信息中获取相关id(当出现故障时)。我该怎么做呢?这里有两个问题。若要对故障执行操作,请参见《赛后》: 通过co-relationid,我假设您的意思是希望从响应中获取标题。请参阅以下文件: 如果你是空手道dsl新手,我建议你先做一些基本的测试。在我看来,以上两个都是高级主题。这里有两个问题。若要对故障执行操作,请参见《赛后》: 通过co-relationid,我假设您的意思是希望从响应中获取标题。请参阅以下文件: 如果你是空手道dsl新手,我建议你先做一些基

上一页   1   2   3   4    5   6  ... 下一页 最后一页 共 37 页