Karate 如何在从空手道文件读取的json中动态设置值

我想使用KARATE框架的数据驱动特性动态设置JSON(从文件读取)中某些元素的值。详情如下: request.json -> { wheels : <wheel>, color: '<color>' } 场景大纲:测试文件读取 # I want to avoid writing below set statements for each element in request #* set reqJson.wheels = <wheel> #* set

Karate 空手道:从API响应中查找特定元素值的索引

查找索引的代码如下所示 * def list = nestActual #this is API response value which is given at the end * def searchFor = { category_name: 'books3'} * def foundAt = [] * def fun = function(x, i){ if (karate.match(x, searchFor).pass) foundAt.add(i) } * eval karate.

Karate 重试直到空手道框架中的xpath条件不起作用

我正在使用空手道框架进行api测试。对于xpath条件,重试逻辑似乎没有按预期工作。我想重试相同的请求,直到某个响应值达到预期值。找到下面的示例和错误 代码 错误是 重试条件评估失败:javax.xml.xpath.XPathExpressionException:javax.xml.transform.TransformerException:应为位置路径,但遇到以下标记:=是不支持xpath,需要使用JS表达式来执行逻辑。请仔细阅读: 提示-您可以在JS中执行如下XPath操作: * de

Karate 在使用空手道后将参数传递给

我在空手道中发现了一个非常有用的特征。但我没有找到如何从主功能向后功能传递参数。例如:用于删除用户帐户或用户id的访问令牌。 以下是我的主要功能中对after-feature.feature的调用: * configure afterFeature = function(){ karate.call('classpath: AfterFeature.feature'); } 这是我的后记 Scenario: * url 'XXX' * path 'YYY' * para

Karate 空手道加特林名称解析程序

我的功能文件中有两个场景 @name=foo @name=fooRamp Scenario : verify Performance for foo Given def query = read('classpath:perf/testData/foo.graphql') And request {query:'#(query)'} And header karate-name = 'foo','fooRamp' @name=bar @name=barRamp Scenario : veri

Karate 浏览器最大化在空手道用户界面中不起作用

我不熟悉空手道用户界面,并试图在mac上使用空手道ZIP版本(0.9.6RC4)最大化chrome浏览器 我两个都试了,运气都不好 Given driver 'https://google.com' And driver.maximize() And maximize() 尽管fullscreen()工作正常,但请帮助抱歉,这似乎是Chrome本身的一个bug。您可以尝试以下实验: * driver.send({"method":"Browser.setWindo

Karate 空手道。打印不打印实际内容

我正在尝试这个 Scenario: FORMAT * def word = '{\n \"enterpriseEventEnvelope\" : {\n \"eventId\" : \"61322555-c5e0-434c-ade0-96f8ca4\",\n \"eventOccurrenceTimestamp\" : \"2018-09-30T02:00:00\",\n \"eventDataQuality\" : {\n \"com.sample.Event

Karate 空手道UI跨浏览器示例

有人举过如何在空手道中运行跨浏览器UI测试的例子吗?我从Peter的推特上知道这是可能的,但是有人举了一些例子吗 谢谢看这个例子: 这是一个场景大纲,每一行都会更改*configure driver=config的值,请参见结尾的示例: Examples: | config | | { type: 'chrome' } | | { type: 'chromedriver' } | | { type: 'geckodriver' } | 另一种策略是使用不同的ka

Karate 空手道加特林:设置本地地址

我有一个简单的空手道特性文件来测试API,我想使用这个特性文件进行负载测试。因此,我使用Gatling来执行空手道特征文件: 但是,当我启动多个用户时,我希望使用配置的不同ip别名提交请求 使用Gatling,我可以使用localAddress绑定到套接字 val protocol = http.localAddresses(ip) 但在空手道加特林中,使用的是卡拉特波托考 val protocol = karateProtocol() 自述文件指出“空手道负责发出HTTP请求,而Gatli

Karate 如何使用功能中的JSON响应数据集构建多个新端点

我有一个json文件,其中包含不同的数据集(超过5行的数组)。我想使用它作为路径和查询参数来构建新端点,并验证新构建端点的响应以找到特定值。我想以循环的方式运行它。我想让您花点时间阅读文档,然后提出具体问题。请参阅: 功能:使用动态表的场景大纲 背景: *def kittens=read(“../callarray/kittens.json”) 场景大纲:猫名: 给定url demoBaseUrl 和路径“猫” 和请求{name:'} 当方法发布时 然后状态200 和match respons

Karate 如何在下一个请求中使用响应头中的位置?

我在做空手道测试 首先是一个职位,期待一个201和一个位置 第二,使用位置from response来执行get 有人知道我怎么用空手道吗 下面的代码是我的尝试,在许多其他代码之后 Given path 'alpha/test' And request """ { "id": '#(uuid)', "content": "test", "isActive": true } """ When method post Then status 201 And def endp

Karate 无法将两个参数作为参数传递给Javascript函数

我试图使用karate.call调用一个JS文件的函数,该文件接收两个参数String,Array of String。但是,字符串数组不会传递给JS文件 JS文件包含: function(query, fragments) { // Here lies some code // One of them includes fragments.length; } 我在另一个JS文件上调用JS函数,方法如下: //var query = 'Some string'; //var fragments

Karate 用空手道匹配html响应

我在将我的响应错误与html匹配时遇到了一个问题 我试过这样做 匹配$.errors='#当前' 匹配$。错误==响应 错误: <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Error</title> </head> <body> <pre>Error: Unexpected object!&

Karate 在空手道中匹配嵌套json数组时出错

有人能帮我解决下面的错误吗?我不确定我错过了什么。我想我错过了一些很简单的东西 断言失败:路径:$[0]。驱动器[*],实际:[{“分区数据”:[{“标签”:“恢复”},{“标签”:“},{“标签”:“},{“新卷”},{“标签”:“}]}],预期:{partitionData=[{“标签”:“#当前”}],原因:实际值不包含预期值 下面是我的模式代码: * set schema | path | 0 | | drives | [{"partitio

Karate 空手道:使用故障保护&x2B;平行流道

我正在使用failsafe编写一些集成测试 有两个类似的功能: Feature: example feature 1 Scenario: Given url 'http://httpbin.org/' When method get Then status 200 我的“套房”是: 当我使用mvn(mvn clean install)运行集成测试时,我得到: 有没有办法计算实际测试的数量,以便我可以在日志中获得: Tests run: 2, Failures: 0,

Karate 如何在空手道框架中编辑已配置的标题

在我的框架中,我有headers.js文件。我使用命令*configure headers=read('headers.js')在每个功能文件的后台调用该js文件。正如预期的那样,在某些情况下,我需要更改“客户端id”值。例如headers.js有一个client id=xyz,我需要在两种情况下更改client id=abc,rest都使用client id作为xyz(我的头有20个不同的值,我不想在require功能文件中写入)有没有办法修改headers.js文件中的一个值并将其用作请求的

Karate 无法使用leftOf选择复选框

我试图单击文本左侧的复选框(作为服务器) 我的HTML代码如下所示 作为服务器,UI测试并不容易。可能有很多原因,例如,您正在使用的Angular可能在页面上做了一些额外的事情并隐藏了元素区域。“友好定位器”的存在是为了方便,但是如果它们不能开箱即用,您应该花一些时间进行故障排除。如果您遵循此流程,以便我们能够改进框架,那就太好了: 所以也许你应该尝试另一种方法,空手道给你很多。例如: * locate('{}as-server').previousSibling.firstChild.cl

Karate 字符串不支持的匹配类型:包含\u DEEP

我试图用空手道来比较一些嵌套很深的JSON对象。看起来“contains deep”正是我想要的,只是如果其中一个嵌套数组只包含此处所示的字符串值(简单的情况,而不是我试图处理的实际响应),它似乎不起作用: 它失败,并显示以下错误消息: unsupported match type for string: CONTAINS_DEEP 这是目前不受支持的东西吗?有计划在将来允许这样做吗?还是有其他方法来实现这一点?理想情况下,我会尽量避免单独比较json的各个部分,因为我使用的有效负载非常大。事

Karate 使用空手道框架的WSHttpBinding问题

我们有使用.NET开发的web服务,一些服务使用basicHttpBinding,还有一些使用wsHttpBinding 通过使用空手道框架,使用basicHttpBinding的服务可以很好地执行,但不能wsHttpBinding。获取响应代码415 通过在SoapUI端执行以下操作,使用wsHttpBinding的相同服务在另一个工具(如SoapUI)中得到了良好的执行 选中启用WS-A寻址 选中添加默认wsa:Action 选中“将默认wsa:添加到” basicHttpbinding

Karate 空手道-如果DTD不可访问,则无法验证XML响应

我有一种情况,需要使用空手道解析XML响应,但无法访问对DTD的引用。换句话说,解析是否需要DTD 有办法解决这个问题吗?老实说,我不确定。如果XML有DTD,您是否面临错误 然后我们可能需要更改为空手道以跳过DTD验证。我认为这个堆栈溢出问题是相关的: 如果您可以提出一个问题,并提供一个带有DTD的XML示例,我们可以很快解决这个问题。老实说,我不确定。如果XML有DTD,您是否面临错误 然后我们可能需要更改为空手道以跳过DTD验证。我认为这个堆栈溢出问题是相关的: 如果您可以提出问题并提供包

Karate 如何从其他.Feature文件中重用空手道中的Javascript函数(写在功能文件中)

因此,对于可重用性,我如何从一个功能文件到另一个功能文件重用特定数量的代码 我不想将函数保存在js文件之外。现在,这在空手道中是不可能的 嗯,这甚至不是有效的增强请求。如果您真的想重用代码,最好将js函数中的功能文件放在外部,并在需要时从不同的功能文件调用它们 《空手道》一书的作者彼得·托马斯(Peter Thomas)提到重用功能是可能的,不能重用功能文件中的特定场景 我不想把函数保存在js文件之外 你不必这么做。请阅读文档。代码重用有多种方法: 的call关键字 背景/ 是的,我已经仔细看过

如何在我的karate-config.js中使用karate.callSingle()?

下面是我的karate-config.js文件。我只想调用一次的特性的类路径是classpath:com/test/scenario/accessToken.feature。我应该把空手道放在哪里 在返回JSON之前,您可以在任何地方包含它。我建议你找一个熟悉基本JavaScript的人帮忙。文档中明确提到,这是针对高级用户的。如果你还不明白我对你上一个问题的回答,我没有更多的补充: 但让我再试一次。在第13行,您可以执行以下操作: var result = karate.callSingle(

KarateDSL解析响应中的值并将其添加到下一个场景有效负载无效

刚接触空手道,我读了大量的空手道教程,并没有意识到这是一个微不足道的问题 我有一个post请求,它成功地列出了所有的应用程序,从响应中我得到了第一个应用程序的ID,并将其打印到控制台,它显示时没有问题。但是,当我在下一个场景的有效负载中使用applicationId时(在同一个功能文件中),applicationId不会添加到有效负载中 Scenario: List all applications Given path '/ListApplications' And request {"req

Karate 空手道API测试-API响应数组的数值验证

我的一个空手道变量holdingid中存储了一个响应: And def holdingID = $GetDataSet_greaterThan_Filter_Response.rowData[*].7 霍丁基德= [ 21015000, 146066000, 10497015000, 58765000, 27790000, 4.308709302E7, 2.0360701868295E7, 21710000, 331720000, 62327000, 57210000, 19430000,

Karate 并行运行空手道测试时必须使用spring引导吗?

如果不使用spring boot framework(它是空手道演示代码的一部分),如何并行运行空手道测试?不,并行运行空手道测试不需要spring boot framework 如果您有自己的项目,并且有自己的api/任何公共api和为这些api编写的空手道测试,那么您不需要spring boot 只有当您想使用空手道演示项目时,才需要SpringBoot,因为它使用SpringBoot作为在空手道演示上编写的测试的模拟web服务 所以,如果你不想有春季开机不要使用空手道演示 现在,如何并行运

Karate 空手道-如何匹配场地的部分字符串?

我有一个json响应,如下所示,我只想匹配字符串“harry” 在自动完成中,自动完成作者中的id 答复{“数据”:{ “自动完成”:[ “哈里·霍尔” ], “自动完成作者”:[ { “id”:“搜索作者”harry martinson, “头衔”:“哈里·马丁森”, “类型”:“作者” } ] } } 请建议如何使用contains执行此验证 我试着像下面一样,这是不工作的 *def autoComlete=获取响应.data.autoComplete[*] *match AutoMLETE

v0.9.4中的karate.abort()会导致html报告中的失败场景

karate.abort()会导致跳过步骤。之前对此进行了修复。但是,cucumber报告将跳过的测试视为失败 有没有什么变通方法可以让我使用karate.abort()而不出现失败的场景,因为我故意使用它来跳过一些数据库检查 或者是否有空手道的替代方法。abort()?是的,我们需要一些社区帮助来解决第三方报告如何处理跳过的步骤,请阅读此内容-也许您可以找到解决方案: 解决方法是拆分为第二个功能,然后: * if (condition) karate.call('second.feature'

Karate 如何基于响应进行条件空手道中止

如果由于其他团队的代码导致特定错误响应出现故障,我们将尝试中止该场景 例如,如果收到错误,我们希望中止测试 错误:[消息:“数据未部署…等”] 我们知道我们可以使用karate.abort(),但是在文档中我们只看到基于状态代码的示例: *if(responseStatus==404)karate.abort() 我想知道我们是否有可能做类似的事情 *if(response.errors[0]。消息包含“数据未部署”)karate.abort() 谢谢是的,它必须是纯JS的 * if (resp

Karate 如何为中心报告功能使用挂钩?

我有一个场景,我想在多个项目中使用空手道,这些项目应该共享一组通用的功能,以使用测试状态更新中央服务器 在测试运行后解析结果是一种选择,但我也在研究在测试运行时使用钩子向服务器发送数据的选项。不过,应该对编写功能文件的人隐藏此报告层 你对如何用空手道最好地适应这一点有什么想法吗?我更愿意将此功能放到构建管道中。拥有易于扩展和集成的中央连续输送管道对我来说至关重要。我不认为这是你想在空手道里面解决的问题。我支持这一点,测试在管道中运行。在测试运行期间,我仍然需要以某种方式连接空手道,以提取有关测试

Karate 如何使用*def result=call read(';classpath:一些可重用的步骤.feature';)读取功能文件中的特定场景? def result=调用read('classpath:一些可重用的步骤.feature')

我在一个功能文件中有多个场景,但我必须阅读其中的特定场景? 请告知请阅读文件: 我按照文档中的说明进行了尝试,但得到了以下错误:com.intuit.karate-不是js函数或功能文件:read('classpath:一些可重用的步骤)。feature@name=delete')-[type:NULL,value:NULL]@Vindhiyan好的,是时候让您遵循这个过程了,最好的是:我看到的区别是-我已经提供了完整的类路径,如果有完整的路径名,我如何使它工作?调用read('classpat

Karate 空手道司机同步挑战

在我使用xpath的某些元素中,空手道驱动的执行有时会失败。(每运行三次;运行一到两次。) 我尝试了以下代码 waitill(“document.readyState=='complete') 单击(“xpath”)此行偶尔会失败一次 xpath一直在处理我现有的Java代码 是否可以应用其他同步方法?这将解决问题: * waitFor('xpath').click() 请仔细阅读本部分文档: 我还发现“document.readyState=='complete'”不可靠。相反,请尝试w

Karate 使用多部分字段在空手道中上载XML文件并获取415个不支持的媒体类型 我正在尝试使用multipart字段和指定的内容类型(如application/x-www-form-urlencoded)上载XML文件,但请求中会自动添加边界,我得到415个不受支持的媒体类型作为响应:

这是我最好的猜测。这是url编码的表单,不是文件上载。其余由您决定: * url 'http://api-sandbox.boicloudtest.net/1/api/open-banking/v3.0/pisp/file-payment-consents/4a90e5cb-8450-4743-8cc9-d655d0d615d2/file' * header x-fapi-financial-id = '0015800000jfQ9aAAE' * header x-jws-signature =

Karate 空手道转辙机:当转辙机进料器和模拟工作流由于登录请求错误而失败时,不会生成报告

如果在转管模拟(无馈线)期间发生登录错误,通常会生成转管报告,显示登录请求失败。登录请求在karate config.js:karate.callSingle('classpath:login.feature',config')中只调用一次 定义转管馈线后,执行空手道功能,从数据库检索模拟期间使用的一些现有数据,如果馈线初始化期间出现登录错误,则不会生成转管报告 我尝试了以下解决方法: 尝试捕获馈线初始化中的所有异常 在karate config.js中强制2个登录请求:一个用于feederk

Does-Dkarate.options="--标签@xyz";为空手道平行跑者(JUnit 5)工作

我一直试图通过命令行mvn test-Dkarate.options=“--tags@hello”-Dtest=TestParallel覆盖并行运行程序中的标记选项(如下所示),但它似乎并不在意。它运行所有标记为“忽略”和“此处定义的标记”的功能。未被覆盖。我尝试了@KarateOptions,但没有用 类TestParallel{ @Test void testParallel() { Results results = Runner.path("classpath:examples"

Karate 空手道用户界面-如何在测试结束时断言url?

我正在尝试空手道UI测试工具。 我认为如果url不匹配,“waitForUrl”命令应该测试失败。但是我的测试是绿色的,即使url不匹配。我是否必须使用两个命令(“waitForUrl”和“match”)才能通过测试 我的功能文件: Feature: web-browser automation Background: * configure driver = { type: 'chrome' } Scenario: Search for Karate on Google Given

Karate 指定测试子集时如何运行TestParallel.java

我实现了一个TestParallel java类,如DemoTestParallel.java所示,用于并行运行和运行cucumber报告。在执行测试子集(在Maven命令行参数中指定runner类或标记)时,是否有方法运行此类?我希望有一个我忽略的简单解决方案。是的。请在文档中查找“标签”: 例如:hmm。也许可以查看@cucumberoptions,除此之外,您还可以尝试在不同的子目录中复制java文件。谢谢你,托马斯。是的,-tags或--name cumber选项将起作用,但是我希望保

Karate 如何将全局变量传递给可重用特征类路径?

我开始使用Karate测试webservices,我想将一个全局变量传递给可重用功能文件的类路径。 有人有主意吗? 提前感谢。这就是空手道配置.js的用途。请参阅文档: 例如,如果您有以下简单的karate config.js文件: function fn() { return { foo: 'bar' } } 您可以在任何功能文件中引用变量foo: * print 'the value of foo is:', foo 我想向功能文件的类路径传递一个全局变量:“call read

Karate 我打算中止该场景,但是,该场景和功能被报告为失败

当满足某些条件逻辑时,我打算停止当前场景的运行,这意味着该场景已通过。然而,cucumber报告称该场景及其功能失败 我在条件逻辑中使用karate.abort()函数。您可以看到mainFlow/unhsFlow_v2.0功能,没有失败的步骤,但是场景和功能被标记为失败 它不应该失败 是的,这在即将发布的0.9.5版本中得到了修复-下周应该会有一个RC 以下是详细信息:是的,这在即将发布的版本0.9.5中得到了修复-下周应该会有一个RC 详情如下:

Karate 调用功能文件时获取java.lang.nullpointer异常

我只是简单地尝试在另一个功能文件中调用该功能文件,但仍然得到java.lang.nullpointer异常 我在空手道官方博客上提供了各种技巧和方法,但错误仍然是一样的 Feature: Quote generator Background: * url 'https://reqres.in' @SmokeTest Scenario: Fetch random quote Given path '/api/users/'+pageNo.Pageno When method GET The

Karate 如何在空手道UI中使用javascript executor

首先,空手道UI自动化是一个非常棒的工具。我喜欢用空手道编写UI测试。我遇到了这样一种情况:在中,我试图获取shadowRoot元素。我读过几篇类似的文章,都是关于JavaScriptExecutor和空手道的,我知道这已经得到了回答。建议使用driver.eval。但是在空手道0.9.5中没有eval,它有script()或scriptAll()。我已经阅读了几次文档,以了解如何在元素中获取元素,但运气不佳。 使用传统的selenium+java,我们可以通过以下方式获取shadowRoot:

Karate 为不存在的json路径匹配每个dosent失败

我有json对象作为响应。如果我尝试一个无效的路径来提取值并用match-each断言它,它总是通过 * match each karate.jsonPath(response,"$[*].non.existing.path") == ["text1"] 我做错什么了吗 请不要:如果我给出了正确的路径,并且该值与“text1”不匹配,则会失败。绝对没有问题。只有无效的json路径才能看到问题。我面临的情况是,我的响应有一个空数组。当我将它与任何值匹配时,它被传递。例如: * match eac

Karate 基于数据库查找的空手道自动化框架设计

我正在尝试使用空手道设计一个测试框架。我在那里面临着挑战。任何帮助或指点都将不胜感激 它是一种应用,广泛的计算涉及复杂的数学规则。一些静态参数是从数据库(MS SQL Server)获取的。这些参数的值预计每6个月的每个季度都会发生变化 我应该如何构造我的预期结果集以放入特征文件中,这样我就无法在每次数据库中的值更改时手动更改它 致以最良好的祝愿 Abhi以下是我要做的。首先,将所有“动态”内容移动到JSON文件中。例如:constants.json { "riskFactor&q

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