我想使用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
查找索引的代码如下所示
* 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.
我正在使用空手道框架进行api测试。对于xpath条件,重试逻辑似乎没有按预期工作。我想重试相同的请求,直到某个响应值达到预期值。找到下面的示例和错误
代码
错误是
重试条件评估失败:javax.xml.xpath.XPathExpressionException:javax.xml.transform.TransformerException:应为位置路径,但遇到以下标记:=是不支持xpath,需要使用JS表达式来执行逻辑。请仔细阅读:
提示-您可以在JS中执行如下XPath操作:
* de
我在空手道中发现了一个非常有用的特征。但我没有找到如何从主功能向后功能传递参数。例如:用于删除用户帐户或用户id的访问令牌。
以下是我的主要功能中对after-feature.feature的调用:
* configure afterFeature = function(){ karate.call('classpath: AfterFeature.feature'); }
这是我的后记
Scenario:
* url 'XXX'
* path 'YYY'
* para
我有一个如下所示的对象数组
"possibleValues": [
{
"unitGroup": "A",
"measurementUnitResource": [
{
"unit": "1"
},
{
我的功能文件中有两个场景
@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
我不熟悉空手道用户界面,并试图在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-config.js中设置了dbusername和dbpassword,如何在功能文件中调用dbusername并将其分配给变量?
我认为有以下几种方法
# if the js file evaluates to a function, it can be re-used later using the 'call' keyword
* def someFunction = read('classpath:some-reusable-code.js')
我已经升级到1.0.0版,在使用0.9.6时遇到了一个运行正常的错误
下面是提供的空手道示例代码,我对其进行了一些修改,以显示我是如何得到错误的
Background:
* url 'https://jsonplaceholder.typicode.com'
* def id = read("id-list.json")
Scenario Outline: [id: <id>] get all users and then get the f
我正在尝试这个
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
有人举过如何在空手道中运行跨浏览器UI测试的例子吗?我从Peter的推特上知道这是可能的,但是有人举了一些例子吗
谢谢看这个例子:
这是一个场景大纲,每一行都会更改*configure driver=config的值,请参见结尾的示例:
Examples:
| config |
| { type: 'chrome' } |
| { type: 'chromedriver' } |
| { type: 'geckodriver' } |
另一种策略是使用不同的ka
我有一个简单的空手道特性文件来测试API,我想使用这个特性文件进行负载测试。因此,我使用Gatling来执行空手道特征文件:
但是,当我启动多个用户时,我希望使用配置的不同ip别名提交请求
使用Gatling,我可以使用localAddress绑定到套接字
val protocol = http.localAddresses(ip)
但在空手道加特林中,使用的是卡拉特波托考
val protocol = karateProtocol()
自述文件指出“空手道负责发出HTTP请求,而Gatli
我有一个json文件,其中包含不同的数据集(超过5行的数组)。我想使用它作为路径和查询参数来构建新端点,并验证新构建端点的响应以找到特定值。我想以循环的方式运行它。我想让您花点时间阅读文档,然后提出具体问题。请参阅:
功能:使用动态表的场景大纲
背景:
*def kittens=read(“../callarray/kittens.json”)
场景大纲:猫名:
给定url demoBaseUrl
和路径“猫”
和请求{name:'}
当方法发布时
然后状态200
和match respons
我在做空手道测试
首先是一个职位,期待一个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.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
我想通过空手道。请求和响应是另一个特性的参数
Background:
* def KLog = Java.type('com.support.KaratePrint')
@SmokeTest
Scenario: Fetch random quote
* print 'My method executed' +KLog.scenarioInfo('Scenario_1', tcDetails.Scenario_1)
Given path '/api/users/'+pageNo.Pageno
我在将我的响应错误与html匹配时遇到了一个问题
我试过这样做
匹配$.errors='#当前'
匹配$。错误==响应
错误:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Error</title>
</head>
<body>
<pre>Error: Unexpected object!&
有人能帮我解决下面的错误吗?我不确定我错过了什么。我想我错过了一些很简单的东西
断言失败:路径:$[0]。驱动器[*],实际:[{“分区数据”:[{“标签”:“恢复”},{“标签”:“},{“标签”:“},{“新卷”},{“标签”:“}]}],预期:{partitionData=[{“标签”:“#当前”}],原因:实际值不包含预期值
下面是我的模式代码:
* set schema
| path | 0 |
| drives | [{"partitio
我正在使用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,
我可以通过调用此方法生成一个10位数的数字,但我不希望生成的数字中有0。非常感谢您的帮助。这应该可以:
* def random_number =
"""
function(s) {
var randomInt2 = Math.random().toFixed(s).split('.')[1];
var randomNum = randomInt2;
return randomNum;
}
"""
这应该起作用:
* de
在我的框架中,我有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文件中的一个值并将其用作请求的
我试图单击文本左侧的复选框(作为服务器)
我的HTML代码如下所示
作为服务器,UI测试并不容易。可能有很多原因,例如,您正在使用的Angular可能在页面上做了一些额外的事情并隐藏了元素区域。“友好定位器”的存在是为了方便,但是如果它们不能开箱即用,您应该花一些时间进行故障排除。如果您遵循此流程,以便我们能够改进框架,那就太好了:
所以也许你应该尝试另一种方法,空手道给你很多。例如:
* locate('{}as-server').previousSibling.firstChild.cl
我试图用空手道来比较一些嵌套很深的JSON对象。看起来“contains deep”正是我想要的,只是如果其中一个嵌套数组只包含此处所示的字符串值(简单的情况,而不是我试图处理的实际响应),它似乎不起作用:
它失败,并显示以下错误消息:
unsupported match type for string: CONTAINS_DEEP
这是目前不受支持的东西吗?有计划在将来允许这样做吗?还是有其他方法来实现这一点?理想情况下,我会尽量避免单独比较json的各个部分,因为我使用的有效负载非常大。事
例如,我在pages文件夹中有一个示例JSON对象,其中包含特定页面的所有XPath
{
"pageTitle1": "//*[@class='page-title' and text()='text1']",
"pageTitle2": "//*[@class='page-title' and text()='text2']",
"pageTitle_x" : "
我们有使用.NET开发的web服务,一些服务使用basicHttpBinding,还有一些使用wsHttpBinding
通过使用空手道框架,使用basicHttpBinding的服务可以很好地执行,但不能wsHttpBinding。获取响应代码415
通过在SoapUI端执行以下操作,使用wsHttpBinding的相同服务在另一个工具(如SoapUI)中得到了良好的执行
选中启用WS-A寻址
选中添加默认wsa:Action
选中“将默认wsa:添加到”
basicHttpbinding
我有一种情况,需要使用空手道解析XML响应,但无法访问对DTD的引用。换句话说,解析是否需要DTD
有办法解决这个问题吗?老实说,我不确定。如果XML有DTD,您是否面临错误
然后我们可能需要更改为空手道以跳过DTD验证。我认为这个堆栈溢出问题是相关的:
如果您可以提出一个问题,并提供一个带有DTD的XML示例,我们可以很快解决这个问题。老实说,我不确定。如果XML有DTD,您是否面临错误
然后我们可能需要更改为空手道以跳过DTD验证。我认为这个堆栈溢出问题是相关的:
如果您可以提出问题并提供包
因此,对于可重用性,我如何从一个功能文件到另一个功能文件重用特定数量的代码
我不想将函数保存在js文件之外。现在,这在空手道中是不可能的
嗯,这甚至不是有效的增强请求。如果您真的想重用代码,最好将js函数中的功能文件放在外部,并在需要时从不同的功能文件调用它们
《空手道》一书的作者彼得·托马斯(Peter Thomas)提到重用功能是可能的,不能重用功能文件中的特定场景
我不想把函数保存在js文件之外
你不必这么做。请阅读文档。代码重用有多种方法:
的call关键字
背景/
是的,我已经仔细看过
下面是我的karate-config.js文件。我只想调用一次的特性的类路径是classpath:com/test/scenario/accessToken.feature。我应该把空手道放在哪里
在返回JSON之前,您可以在任何地方包含它。我建议你找一个熟悉基本JavaScript的人帮忙。文档中明确提到,这是针对高级用户的。如果你还不明白我对你上一个问题的回答,我没有更多的补充:
但让我再试一次。在第13行,您可以执行以下操作:
var result = karate.callSingle(
刚接触空手道,我读了大量的空手道教程,并没有意识到这是一个微不足道的问题
我有一个post请求,它成功地列出了所有的应用程序,从响应中我得到了第一个应用程序的ID,并将其打印到控制台,它显示时没有问题。但是,当我在下一个场景的有效负载中使用applicationId时(在同一个功能文件中),applicationId不会添加到有效负载中
Scenario: List all applications
Given path '/ListApplications'
And request {"req
我的一个空手道变量holdingid中存储了一个响应:
And def holdingID = $GetDataSet_greaterThan_Filter_Response.rowData[*].7
霍丁基德=
[
21015000,
146066000,
10497015000,
58765000,
27790000,
4.308709302E7,
2.0360701868295E7,
21710000,
331720000,
62327000,
57210000,
19430000,
如果不使用spring boot framework(它是空手道演示代码的一部分),如何并行运行空手道测试?不,并行运行空手道测试不需要spring boot framework
如果您有自己的项目,并且有自己的api/任何公共api和为这些api编写的空手道测试,那么您不需要spring boot
只有当您想使用空手道演示项目时,才需要SpringBoot,因为它使用SpringBoot作为在空手道演示上编写的测试的模拟web服务
所以,如果你不想有春季开机不要使用空手道演示
现在,如何并行运
我有一个json响应,如下所示,我只想匹配字符串“harry”
在自动完成中,自动完成作者中的id
答复{“数据”:{
“自动完成”:[
“哈里·霍尔”
],
“自动完成作者”:[
{
“id”:“搜索作者”harry martinson,
“头衔”:“哈里·马丁森”,
“类型”:“作者”
}
]
}
}
请建议如何使用contains执行此验证
我试着像下面一样,这是不工作的
*def autoComlete=获取响应.data.autoComplete[*]
*match AutoMLETE
karate.abort()会导致跳过步骤。之前对此进行了修复。但是,cucumber报告将跳过的测试视为失败
有没有什么变通方法可以让我使用karate.abort()而不出现失败的场景,因为我故意使用它来跳过一些数据库检查
或者是否有空手道的替代方法。abort()?是的,我们需要一些社区帮助来解决第三方报告如何处理跳过的步骤,请阅读此内容-也许您可以找到解决方案:
解决方法是拆分为第二个功能,然后:
* if (condition) karate.call('second.feature'
如果由于其他团队的代码导致特定错误响应出现故障,我们将尝试中止该场景
例如,如果收到错误,我们希望中止测试
错误:[消息:“数据未部署…等”]
我们知道我们可以使用karate.abort(),但是在文档中我们只看到基于状态代码的示例:
*if(responseStatus==404)karate.abort()
我想知道我们是否有可能做类似的事情
*if(response.errors[0]。消息包含“数据未部署”)karate.abort()
谢谢是的,它必须是纯JS的
* if (resp
我有一个场景,我想在多个项目中使用空手道,这些项目应该共享一组通用的功能,以使用测试状态更新中央服务器
在测试运行后解析结果是一种选择,但我也在研究在测试运行时使用钩子向服务器发送数据的选项。不过,应该对编写功能文件的人隐藏此报告层
你对如何用空手道最好地适应这一点有什么想法吗?我更愿意将此功能放到构建管道中。拥有易于扩展和集成的中央连续输送管道对我来说至关重要。我不认为这是你想在空手道里面解决的问题。我支持这一点,测试在管道中运行。在测试运行期间,我仍然需要以某种方式连接空手道,以提取有关测试
我在一个功能文件中有多个场景,但我必须阅读其中的特定场景?
请告知请阅读文件:
我按照文档中的说明进行了尝试,但得到了以下错误:com.intuit.karate-不是js函数或功能文件:read('classpath:一些可重用的步骤)。feature@name=delete')-[type:NULL,value:NULL]@Vindhiyan好的,是时候让您遵循这个过程了,最好的是:我看到的区别是-我已经提供了完整的类路径,如果有完整的路径名,我如何使它工作?调用read('classpat
在我使用xpath的某些元素中,空手道驱动的执行有时会失败。(每运行三次;运行一到两次。)
我尝试了以下代码
waitill(“document.readyState=='complete')
单击(“xpath”)此行偶尔会失败一次
xpath一直在处理我现有的Java代码
是否可以应用其他同步方法?这将解决问题:
* waitFor('xpath').click()
请仔细阅读本部分文档:
我还发现“document.readyState=='complete'”不可靠。相反,请尝试w
这是我最好的猜测。这是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 config.js:karate.callSingle('classpath:login.feature',config')中只调用一次
定义转管馈线后,执行空手道功能,从数据库检索模拟期间使用的一些现有数据,如果馈线初始化期间出现登录错误,则不会生成转管报告
我尝试了以下解决方法:
尝试捕获馈线初始化中的所有异常
在karate config.js中强制2个登录请求:一个用于feederk
我一直试图通过命令行mvn test-Dkarate.options=“--tags@hello”-Dtest=TestParallel覆盖并行运行程序中的标记选项(如下所示),但它似乎并不在意。它运行所有标记为“忽略”和“此处定义的标记”的功能。未被覆盖。我尝试了@KarateOptions,但没有用
类TestParallel{
@Test
void testParallel() {
Results results = Runner.path("classpath:examples"
我正在尝试空手道UI测试工具。
我认为如果url不匹配,“waitForUrl”命令应该测试失败。但是我的测试是绿色的,即使url不匹配。我是否必须使用两个命令(“waitForUrl”和“match”)才能通过测试
我的功能文件:
Feature: web-browser automation
Background:
* configure driver = { type: 'chrome' }
Scenario: Search for Karate on Google
Given
我在docker中运行测试时遇到一些问题。我不确定这是空手道还是docker配置
背景如下:
Background:
* configure report = { showLog: true, showAllSteps: false }
* def ts = call read('classpath:utilities/helper-random-data-js.feature@timestamp')
* def timestamp = ts.timestamp
我实现了一个TestParallel java类,如DemoTestParallel.java所示,用于并行运行和运行cucumber报告。在执行测试子集(在Maven命令行参数中指定runner类或标记)时,是否有方法运行此类?我希望有一个我忽略的简单解决方案。是的。请在文档中查找“标签”:
例如:hmm。也许可以查看@cucumberoptions,除此之外,您还可以尝试在不同的子目录中复制java文件。谢谢你,托马斯。是的,-tags或--name cumber选项将起作用,但是我希望保
我的代码如下=>
@用户验证邮件
Feature: Verify User Details
Scenario: Verify User Details api
Given url 'http://127.0.0.1/user/?id=123'
When method get
Then status 200
* def DbUtils = Java.type('com.intuit.karate.treebo.util.DbUtils')
* d
我开始使用Karate测试webservices,我想将一个全局变量传递给可重用功能文件的类路径。
有人有主意吗?
提前感谢。这就是空手道配置.js的用途。请参阅文档:
例如,如果您有以下简单的karate config.js文件:
function fn() {
return { foo: 'bar' }
}
您可以在任何功能文件中引用变量foo:
* print 'the value of foo is:', foo
我想向功能文件的类路径传递一个全局变量:“call read
当满足某些条件逻辑时,我打算停止当前场景的运行,这意味着该场景已通过。然而,cucumber报告称该场景及其功能失败
我在条件逻辑中使用karate.abort()函数。您可以看到mainFlow/unhsFlow_v2.0功能,没有失败的步骤,但是场景和功能被标记为失败
它不应该失败 是的,这在即将发布的0.9.5版本中得到了修复-下周应该会有一个RC
以下是详细信息:是的,这在即将发布的版本0.9.5中得到了修复-下周应该会有一个RC
详情如下:
我只是简单地尝试在另一个功能文件中调用该功能文件,但仍然得到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
首先,空手道UI自动化是一个非常棒的工具。我喜欢用空手道编写UI测试。我遇到了这样一种情况:在中,我试图获取shadowRoot元素。我读过几篇类似的文章,都是关于JavaScriptExecutor和空手道的,我知道这已经得到了回答。建议使用driver.eval。但是在空手道0.9.5中没有eval,它有script()或scriptAll()。我已经阅读了几次文档,以了解如何在元素中获取元素,但运气不佳。
使用传统的selenium+java,我们可以通过以下方式获取shadowRoot:
我有json对象作为响应。如果我尝试一个无效的路径来提取值并用match-each断言它,它总是通过
* match each karate.jsonPath(response,"$[*].non.existing.path") == ["text1"]
我做错什么了吗
请不要:如果我给出了正确的路径,并且该值与“text1”不匹配,则会失败。绝对没有问题。只有无效的json路径才能看到问题。我面临的情况是,我的响应有一个空数组。当我将它与任何值匹配时,它被传递。例如:
* match eac
我正在尝试使用空手道设计一个测试框架。我在那里面临着挑战。任何帮助或指点都将不胜感激
它是一种应用,广泛的计算涉及复杂的数学规则。一些静态参数是从数据库(MS SQL Server)获取的。这些参数的值预计每6个月的每个季度都会发生变化
我应该如何构造我的预期结果集以放入特征文件中,这样我就无法在每次数据库中的值更改时手动更改它
致以最良好的祝愿
Abhi以下是我要做的。首先,将所有“动态”内容移动到JSON文件中。例如:constants.json
{
"riskFactor&q
1 2 3 4 5 6 ...
下一页 最后一页 共 36 页