Karate 场景启动时的日志名称

有没有办法让空手道在执行到日志中时自动打印每个场景的名称?我们有一个相当大的套件,可以在Jenkins pipeline console输出中生成~25MB的日志数据,有时尝试将com.intuit.karate记录错误的行与运行结束时的故障摘要相匹配会有点棘手。最有可能获得场景名称并print()它,但这将意味着向数百个我希望避免的场景添加代码。作为空手道修复的一部分,将记录场景名称(如果不是空的话)以及任何故障跟踪 带有此修复程序的beta版可用0.6.1.2如果您可以尝试并确认,那就太好了

Karate 定义一个变量来设置数组的长度是失败的,但断言和打印是有效的 def count=*打印响应。团队[0]。团队成员。长度抛出以下错误

com.jayway.jsonpath.PathNotFoundException:应查找对象 在路径$['teams'][0]['teamMembers']中使用属性['length'],但是 找到“net.minidev.json.JSONArray”。 这不是json对象 根据JsonProvider的说法: 'com.jayway.jsonpath.spi.json.JsonSmartJsonProvider' 打印响应。团队[0]。团队成员。长度和 assert response.t

Karate 空手道API:显示JSON解析错误,而不是返回错误的HTTP代码

给出以下步骤列表 Given path 'verify' And header x-api-key = apiKey And header tenant-id = tenantId And request a_json_object_with_invalid_user_id_to_verify When method put Then status 404 当端点返回HTTP 200(这是一个我需要修复的错误)但带有无效的json响应时,例如 { "score" : } 将引发此异常

Karate 查询参数的默认值

如果我的问题没有道理,请原谅 我试图做的是为查询参数注入值 GET1 File Scenario: Given path 'search' And param filter[id] = id (default value or variable from another feature file) POST1 File Scenario: def newid = new id made by a post call def checkid = read call(GET1) {id : ne

Karate 如何匹配在JSON数组中不传递NULL的空字段(';';)的响应

如何匹配具有不传递NULL的空字段(“”)的响应,如果我在匹配每个响应时尝试#notnull,脚本将获得传递。但是我在响应中看到很少有空字段如果您的服务器返回空格,但您希望将其验证为null,则说明您或服务器是错误的 这就是说,你可以很容易地用空手道验证你想要的任何东西: * def isBlank = function(s){ return s ? ('' + s).trim() === '' : true } * def foo = { bar: ' ' } * match foo == {

Karate 要求在空手道中调用POST方法

今天我遇到了一个场景,其中有一个POST方法调用,但不需要请求数据,查询参数就足够了。但在空手道框架中,当使用POST方法时,必须提供请求数据。所以我必须显式地将请求提供为“null”。在空手道中,如果没有请求数据,您是否可以跳过以“null”形式提供请求数据。如果没有请求正文,我通常会这样做: 给定路径“/path/to//action” 和请求“” 当方法发布时 然后状态200 (没有找到跳过请求步骤的方法)我尝试了以下方法: Given url 'url' And params param

Karate 使用If条件选择数据

对于我的测试用例,我需要从json文件和另一个特性文件(它反过来包含DB连接并从DB返回数据)中注入数据。如果json文件中提到数据为“null”,那么代码应该调用DB.feature文件并返回数据。如果这些是在json文件中填充的数据,那么代码应该选择该数据并忽略DB.feature调用 为此,这里有一个示例Test.json文件,我从中获取数据 { "data": [ {"service": null} ] } 下面是有条件的示例代码 * json data = call

Karate 在另一个请求中提取令牌和参数化

我从Post请求中得到一个JSON响应 { "access_token": ".u9H5YgCCoMJHTW6SgVMxJe2aUEGHpMBbUf1456Gkj28", "token_type": "bearer", "expires_in": "4319", "scope": "READ " } 我想获取这个访问令牌并将其传递到另一个GET API请求中,如下所示 And header Authorization = token 我做了什么? 首次发布ap

Karate 空手道:如何测试多部分表单数据端点?

我在控制器中有一个文件上载端点(/document),定义如下: @RestController public class FileUploadController { @Autowired private PersonCSVReaderService personCSVReaderService; @PostMapping(value = "/document", consumes= {MediaType.MULTIPART_FORM_DATA_VALUE})

Karate 空手道:如何在空手道中初始化RemoteWebDriver

我们在CI流程中使用docker。我想在chrome的docker容器中启动RemoteWebDriver。是否可以使用空手道框架执行此操作?目前没有内置支持,但您可以尝试使用以下说明: 编辑:这在0.9.5中受支持 文档:我拉了你的开发分支并在本地构建。我正在尝试运行UI功能demo-01.feature,但由于某些原因,我的getting runner异常如下所示。我指的是mvn 0.9.5.RC1***运行程序异常堆栈跟踪***java.nio.file.InvalidPathExcept

Karate 有没有一种方法可以像java方法链接一样在空手道中链接场景

在过去的6个月里,我一直在使用空手道,它提供的功能给我留下了深刻的印象。 我知道空手道是用来单独测试API的,但我们也在尝试将其用于E2E测试,包括一步一步地调用多个场景。 我们的功能文件如下所示 1.通话功能1:情景1 2.通话功能2:场景2 ..... 注意:我们正在为API测试和E2E测试重新使用场景。有时我发现很难记住所有的功能文件。 我们能否像java一样链接场景调用,我怀疑功能文件是否允许我们这样做。我们需要你的宝贵建议。如果您认为我们的方法不正确,请告知我们 首先,我想引用文档:

Karate 空手道。比较两个需要XML响应的Webmethod响应,其中一个是XML,另一个是Json

我使用空手道验证来自两个Webmethods的xml响应。我们有一个旧的webmethod,它直接命中数据源。我们在该数据源之上添加了一个层,使用Webmethod和数据库返回相同的数据。期望是旧的webmethod和新的webmethod将返回相同的数据。我一直关注的是响应以不同的格式显示,一种是JSON,另一种是XML My feature file setup. Feature: Campare Background: * configure ssl = true

Karate 服务虚拟化-空手道

服务虚拟化是个新手,但在我研究的时候,我注意到空手道也对它有一些支持。由于我已经在使用它,我很好奇它是否能满足需要。我正试图用一些重试逻辑测试调用另一个API B的API A。请求没有更改,但B可能会发送一个带有错误消息或成功消息的响应正文。其目的是重试x次,直到我们看到失败的成功。所以,问题是我如何在这个测试中模拟B的响应?当然,A提出的请求将保持不变。空手道可以轻松做到这一点。您可以在模拟中设置一个“全局”变量,该变量将记录调用的次数。其余的是“普通”空手道 你应该看看这些文件。如果需要,可

Karate 如何解析这个json字符串响应

我有一个websocket响应,如下所示 a["{\"type\":\"1ffe4b5d___AC_GET_MY_AVAILABLE_TASKS___N\"}"] 有谁能告诉我如何解析它吗?完全由您决定,如果需要,可以使用字符串操纵或使用自定义Java代码,我只能给您一个提示: * def response = 'a["{\"type\":\"1ffe4b5d___AC_GET_MY_AVAIL

Karate 可在空手道中访问特定于竹子的构建计划变量

如何在空手道配置文件中引用竹子构建计划变量?我所有空手道测试都有一个竹制的计划。我需要能够在karate.config文件中引用bambol变量,以便在Bambol构建中运行空手道测试 我试过这样的方法: config.branchSource=karate.properties['branch.source'] 其中“branch.source”是我在运行时输入的竹构建计划变量(运行自定义),没有运气 我希望在运行时传递一个变量,我用竹子输入这个变量,空手道测试将在该变量中进行适当的拾取和使用

Karate 我的目标文件夹中没有html报告

我已经创建了我的第一个功能,它运行得非常棒。然而,我并没有在我的目标文件夹中看到下面的html报告。你能帮我一下吗。https://github.com/intuit/karate/blob/master/karate-demo/src/test/resources/karate-maven-cucumber-reporting.png假设您正在查找cucumber报告 @CucumberOptions(features = {"src/test/java/features"},glue={"s

Karate 覆盖已在后台设置的路径

在背景:中设置路径后,是否有方法覆盖路径 我有很多测试(边界值),它们基本上只随我测试它们的函数而变化。因此,我可以在Background中设置path,这很好。 但有时,我需要链接几个调用,因此也需要path变量 如果我这样做 Given path 'Client/GetClient' ... Given path 'GetServices' ... 每次调用path都会正确覆盖路径,但如果我这样做 Background: * path 'Client/GetClient' ... Gi

Karate 如何在空手道API测试中使用正则表达式验证模板中的响应结构

我试图使用json模板验证响应结构和响应值。我可以使用正则表达式验证可能具有不同预定义值的键。但无法通过在模板中提供正则表达式来验证日期时间 例如: 待验证的API响应: t1 = { "key1": "ABC", "DateTime" : "2018-01-30T14:00:00+00:00" } 验证模板: t2 = { "key1": "#regex(ABC|PQR|XYZ|AAA)$",, "DateTime" : "#regex \d{4}-(?:0[1-9]|1[0

Karate 如果数据元素的顺序不同,空手道比赛将失败

我试图验证一个Xml响应,其中一个父元素有多个子元素,这些子元素具有相同的标记,但文本内容不同,如下所示: Scenario: test Given def expectation = <parent><child>1</child><child>2</child</parent> And def reality = <parent><child>2</child>

Karate 如何在空手道中迭代普通数组?

我的一个任务的输出是['a','b','c'] 现在我必须在DB查询中使用这些值 * def queryToGetHotelIdForAvailableCsId = "select id from hotels_hotel where cs_id in ('a','b','c');" 在空手道中如何做到这一点?使用Java助手可能会更好,但您可以这样做: * def json = ['a', 'b', 'c'] * def fun = """ function(array) { var

Karate 使用Java代码处理自定义逻辑的模拟服务器

我已经完美地运行了基于空手道的模拟API服务器。当场景匹配时,我还希望执行一些自定义Java代码 使用jar执行模拟,如下所示 java -jar karate-0.9.0.jar -m ./src/test/java/Mymock.feature -p 9000 Mymock.feature有如下内容 Scenario: pathMatches('/') * def Signature = Java.type('Signature') * def sign = Sign

Karate Karati Api-验证日期和时间格式

响应={“startDateTime”:“2018-10-25T00:00:00Z”, “endDateTime”:“2019-10-25T00:00:00Z”} 我如何验证此操作的日期和时间^^ 和匹配响应={startDateTime:?} 我是QA,不是Java专家,但如果有人能给我举个例子或正则表达式的例子,我会同意的^^ 谢谢如果您想阅读文档,您可以找到以下示例: 另请参见以下答案:

Karate 至于「;“嵌入式表达式规则”;,字符串串联不起作用

我使用SQL从数据库中获取数据,我需要将一个变量传递给where子句,但是,我发现字符串连接不起作用,即使是官方示例 * def batchnum = "112344552" * def getBatchIDSQL = '#("select id from sr_sendreceive where batchnum = " + batchnum)' * print getBatchIDSQL * def sendReceiveBatchid = db.readValue('#(getBatchI

Karate “错误”;实际值不是字符串";在空手道表演时

实际值不是字符串错误 执行断言时获取错误 字段1=[1850700,30] 字段2=[“1850.0”、“30.0”、“700.0”] 错误-断言失败:路径:$,实际值:[1850,700,30],应为“[“1850.0”,“30.0”,“700.0]”,原因:实际值不是字符串,因为它不是字符串。这将有助于: * def field1 = [1850, 700, 30] * def field2 = ["1850.0","30.0","700.0"] * def field3 = karate.

Karate 空手道:为响应中的变量指定特定值

我有一个场景,在这个场景中,我必须从响应中的超链接获取值,并将其分配给一个变量,我可以将这个变量传递到url中。下面是json响应 { "activationDate": "2019-08-20T14:39:07.953", "expirationDate": "2023-01-30T14:39:07.953", "timestamp": "637078348862871855", "links": [ { "href": "https://someurl/a

Karate 空手道:匹配JSON数组响应,其中每个命中的数组顺序不同

我有一个场景,其中响应数组的一部分是来自子API的响应。 子API响应如下所示,但没有具体顺序。我需要检查父API中是否存在子API响应(与子API中元素的顺序无关)。我遵循这个思路,但在我的案例中它不起作用 * def response1 = """ { "array1": [ { "element": { "id": "A1", "array11": [

Karate 在空手道特征文件中同时发出请求

我必须测试后端的速率限制功能。 我需要同时发出请求(例如:5),并检查其中一个是否由于后端的速率限制设置而失败 像是产生5个线程,每个线程执行一个请求,或者发出5个异步请求 我读过空手道加特林,它做了一些类似的事情,但它似乎是为了性能测试 这是可能的吗?空手道在这方面做得太过火了,就用Java或类似的东西吧。空手道在这方面做得太过火了,就用Java或类似的东西吧。有几种方法,但正如@peter thomas提到的,可能做得太过火了。使用空手道junit并行执行,您可以通过scenatio大纲复制

Karate 空手道中如何解压gzip响应

有没有办法用空手道解压gzip响应?。我曾尝试使用空手道apache v0.9.6和空手道jersey v0.9.6,但默认情况下,这两种版本都没有解压缩响应内容。 当我尝试获取并打印响应时,我看到如下所示 INFO com.intuit.karate - [print] the resp l�ǒ�@�Ee�{��wh�5�Bk-�����ͪ͘�T 我不确定我在这里错过了什么 但是,当我尝试使用ApacheHttpClient.GzipDecompressingEntity时,我成功

Karate 空手道是否支持.avro文件作为输入请求?

我们需要将.avro文件作为输入请求发送到API。我真的被困在这一点上了。如果提供任何详细示例,我们将不胜感激。只需使用Java互操作: 您需要编写一个助手(从静态方法开始)来将JSON转换为Avro,反之亦然。我知道团队在gRPC中使用这个。阅读此帖子获取提示: 还有一个“空手道grpc”项目:非常感谢peter,我知道这是出于空手道要求avro转换为json,反之亦然转换参考。有什么帮助吗?@SandeepPadala我在谷歌上找到了一些链接。试试看!

Karate 响应json的任何元素/对象的范围仅在场景中

场景:生成jwt并检查状态 给定路径“/sdk/jwt” header Authorization = call read('jwt.js') { token: 'e68c82a665847c', secret: 'f08f06f1f41f4479854c' } 当方法得到 然后状态200 和def tkn=响应 场景:获取实例的项目元信息 给定路径“/meta/project” 标题授权=JWT tkn#这是第一个场景的响应。 当方法得到 那么状态是200 但tkn值在第二种情况下不会出现。

Karate 场景和场景输出线之间的差异

我已经创建了下面的功能,并在另一个功能文件中调用它 @忽略 功能:可重复使用的功能,用于创建单个订单 场景大纲:创建多个用户并验证其id、姓名和年龄 给定url“*****/sun api//user/*****” 和请求{locale:'',offerId:'',operationType:'',paidTermDuration:'',paidTermDurationUnit:'',paymentCategory:'',storeOrderId:'',userId:''} 当方法发布时 然后状

Karate 需要一个关于如何使用空手道脚本从头开始使用gatling进行性能测试的示例deno吗

我对性能测试非常陌生,我在gatling中使用空手道脚本创建了一个示例项目,但无法理解如何进行 有谁能解释一下如何使用空手道通过使用一些公共api(如下所示)使用gatling进行性能测试 场景:获取特定于状态的信息-一个状态 给定url“” 当方法得到 然后状态200 *def resp=response.response.result.name *打印响应 这样我们就可以在我们的项目中使用它。无法理解github空手道中当前可用的演示项目您只需Git克隆并运行(使用Maven)这个简单的独立

Karate 空手道-匹配两个复杂的混合json

下面的问题与此非常相似:我浏览了“建议包含快捷方式”,但找不出答案 我需要比较两个json文件,但使用contains关键字。为什么只包含?因为在某些情况下,我只需要匹配json文件中的一些选定字段。下面是示例和代码 Json文件1:Test.Json { "webServiceDetail":{ "feature":{ "featureCd":"ABCD", "imaginaryInd":"100.0", "extraIn

Karate 功能“tag”筛选器在并行执行时工作不正常

当我使用@smoke标记运行时,它对所有没有@smoke标记的功能文件进行循环,并在控制台中打印跳过的功能文件,如下所示- runner.KarateRunnerTest - <<skip>> feature 362 of 1436: runner.KarateRunnerTest - <<skip>> feature 363 of 1436: 不,这很好,并且在0.9.0以后的版本中行为发生了变化。空手道将扫描所有文件 再次检查,它将不会执行

Karate 如何断言具有特殊字符的字符串?

def errorMessage='客户端版本无效。客户端版本不能包含以下任何字符:\“&'(),/:;\” def expectedMessage='客户端版本无效。客户端版本不能包含以下任何字符:\“&'(),/:;\' 然后匹配错误消息包含预期消息 由于我的错误消息和预期消息中有特殊字符,因此断言失败您必须转义一些特殊字符,如单引号和双引号 # Client version is invalid. The client version cannot contain any of the

Karate notpresent关键字在空手道中不起作用

我试图断言一个键不在JSON响应中。这就是答案 { "_type": "UserAccount", "accountName": "Account_Name", "accountType": "regular", "whiteList": true, "sfAccountId": "1", "preferredLanguage": "english", "imageSize": "highRes", "_id": "775a8

使用karate.set更改数组的值

我想使用karate.set更改数组中的值,因为我在if条件下使用它 我的代码是: > * def name = ["ankit"] > * def value = 2 > * eval if ( value == 2) karate.set('name', 'ANKIT_DESAI') 但是name的值没有改变假设它是一个列表,并基于索引修改值 * def name = ["ankit"] * def value = 2 * eval if ( value == 2) na

Karate 调用javascript函数时,有效的json变为无效的json

实际输出-{pratyush=abc} 预期输出-{“pratyush”:“abc”}使用pretty像JSON一样打印它 * def xyz = 'abc' * def abc = {"pratyush" : '#(xyz)'} * def editJson = """ function(s) { var x = s.x karate.log(x) } """ * def p = call editJson ({"x" :abc}) 除此之外,它不会使其成为无效的JSON karate.lo

Karate 简单的POST请求在空手道API中不起作用,同样在POSTMAN中也可以,请建议在';请求';

简单的POST方法在空手道API中不起作用,在POSTMAN中效果很好, 获取错误如下所示 错误com.intuit.karate-java.net.ConnectException:连接被拒绝:连接,URL的http调用在1101毫秒后失败: 它在邮递员和浏览器中运行良好 网址: 您还没有阅读文档,也没有意识到这是一个HTML表单提交。内容类型应该给您一个提示。以下是您的解决方案: Given url 'https://api.stripe.com/v1/customers' And head

Karate 断言错误-无法将java.lang.String强制转换为java.util.List

在进行断言时获取错误 field1是来自DB的值,我想将它们与field2匹配(来自响应xml的值) 字段2是以下操作的结果 * def field2 = get Response SOME_XML_XPATH 它可能包含值列表中的单个值,如 field2=19.2或field2=[“188.3”、“281.11”] 问题是当我尝试比较两个类似列表的字段时 field1=[1850700,30]field2=[“1850.0”、“30.0”、“700.0”] 为了解决这个问题,我使用了下面的代

Karate 空手道测试用例在更新到jdk版本1.8.0_111后失败

我无法运行我的测试用例。下面是我的配置和使用的IDE- Maven:3.6.0 JDK:1.8.0_111 IDE:Intellij 空手道版本:0.9.0 由com.intuit.karate导致-javascript函数调用失败:ReferenceError:“karate”未定义karate至少需要1.8.0_112或更高版本。文件中提到了这一点

Karate 在单个场景大纲中匹配多个响应

我想匹配一个API的多个响应。请查看下面的场景大纲 Background: * def kittens = read('../sample.json') Scenario Outline: Create Test1 Given url url And request <Users> When method POST Then status 200 And match response.success.name == <expectedName> And match re

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