我需要将响应值从功能文件传递到javascript函数,该函数在config.js文件中定义,用于某些计算目的。
请帮助我们如何调用config.js文件中的函数 首先请参考以下内容:
只需将JS作为一个*.JS文件保存,然后从任何功能或karate config.JS重新使用它即可。请注意,karate.call()
也许你也应该看看这个例子,它在0.7.0中是新的。截至本文发布之时,版本0.7.0.RC5已可供测试
我试着回答。还尝试了在()中使用封闭。
如果有人能做到这一点,请告诉我。只需添加一个字符即可解决您的问题
Example:
Scenario: test
* def response =
"""
[
"YEN01",
"DP258",
"SA661",
"BT202",
"UR809"
]
"""
* def subset = response.[:2]
* print subset
空手道默认为JavaScrip
我有一个调用其他外部/第三方服务的API。当使用功能文件调用API时,是否可以跳过调用外部/第三方服务
NA
NA
NA通常,不会,因为空手道无法控制API的实现方式
但也许你正在寻找空手道双打:
有了这些,您可以做的是:
编写模拟外部/第三方服务的模拟
将您拥有的API配置为调用mock(在localhost)而不是外部URL
在API上运行正常的空手道测试。作为测试设置的一部分,您应该能够进行配置并自动启动模拟,请参阅:
我试图调用一个功能文件,它也在调用内部的另一个。我调用的功能位于另一个目录中。
因此,当我执行场景时,它看起来是在错误的地方
以下是一个例子:
-scenarios
--directoryA
---feature1
---feature2
--directoryB
---feature3
在执行功能3后我得到的错误:
feature2.feature:9 - javascript evaluation failed: read('feature1.feature'), java.io.File
如何在gatling模拟中运行多个空手道功能文件
以下是我的gatling模拟代码片段:
class TestGatlingScalaSimulation extends Simulation {
val log: Logger = LoggerFactory.getLogger(classOf[TestGatlingScalaSimulation])
/*val environmentVars = System.getenv().asScala
for ((k,v) <-
空手道是个新手。我正在尝试调试一些测试,这些测试由于SocketTimeoutException而间歇性失败。我通常会看到这样的情况:
com.intuit.karate.exception.KarateException: -unknown-:16 -
create-identity.feature:23 -
java.net.SocketTimeoutException: Read timed out
at ✽.* def associatedUserIdentity = cal
如何在空手道中传递x-www-form-urlencoded-grant_type=client_凭证
嗨
我正试图以空手道编码的x-www-form-url形式传递value grant\u type=client\u凭证,这是我和邮递员一起做的
我知道空手道会默认将内容类型设置为x-www-form-urlencoded,但是你能帮我解决我这里的错误吗
空手道脚本:
enter code here
Given url 'http://env/singlesignon/v1/access/
我在MAC中开发了空手道UI自动化脚本/功能。它非常稳定,运行良好。我正试图设置Jenkins在windows虚拟机中触发相同的事件
我试图在windows VM中手动运行该脚本,但每次尝试都会在不同点失败
错误始终为“javascript评估失败”
javascript评估失败:输入(login.newPwd,pwd),无法获取的答复
javascript计算失败:retry().input(reg.add1,address),无法获取以下内容的答复:[id:51,方法:input.dispa
当我在Eclipse中使用DBUtils.java并在那里运行测试时,它工作得很好,但是当我通过Jenkins运行它时,第一次使用DBUtils是失败的。第二部作品。。。
它第一次使用db.readRows时失败
Scenario: Account Create
Given path 'accounts'
And header Authorization = setup.authorization
And request {identifier: KarateC
我有一个来自使用空手道框架的api的响应,它是这样的
{
"name": "xyz.json",
"fileSize": "391 B",
"timestamp": "2020-06-22 12:03:00 GMT",
"tag": "abc1"
},
{
"name": "abc.json",
&
在与HTML报告一起生成报告时,是否有现有的运行程序“builder”方法来禁用~karate json.txt输出
我正在寻找类似于outputJunitXml(false)
任何帮助都将不胜感激。不,没有。这是个问题,有什么原因吗?没有它,空手道将无法生成最终报告。这种设计是为了防止在长时间运行大型测试套件时内存不足
请注意,空手道是开源的。也许您可以贡献代码来改进这一点?谢谢您的回复!我只是在研究如何进一步组织生成的报告文件,这样就不成问题了。谢谢你澄清这是必要的。一旦我找到时间,我将研究
我必须验证每个响应的格式是否正确。我在我的功能中添加了:
和match每个响应包含{id:'#string',name:'#string',phone:'#number'等}
但我想把它放在一个JSON文件中,因为我在不同的功能中多次需要它。
当我在JSON文件中使用“忽略或验证”标记时,它不起作用。可以这样做吗?可以,为什么不可以。首先将以下内容放入名为itemschema.json的文件中
{ "id": "#string", "name": "#string", "phone": "#nu
我有一个场景:
调用API-捕获响应-从响应中获取ID,并调用从响应1获取输入ID的另一个API
例:
如何传递值(来自调用1的Id)是createBackendHistory API
当我尝试orgId:“#(id)”时,我遇到了错误。因为查询是文本您不能使用#()嵌入表达式。请参阅以下文件:
试试这个:
Given text query =
"""
mutation {
createBackendHistory(orgId: '<id>') {
orgId
}
我有一个简单的POST请求,它需要一个json内容类型头和一个类似
{
oneNbr: "2016004444",
twoCode: "@@@",
threeNbr: "STD PACK",
sheetTitle: "010000",
codeType: "AF14"
}
当我在Postman中运行它时,它按预期运行,返回200个状态和预期的响应
以下是同样的空手道脚本:
Scenario: Sample test
* def payload =
我正在创建一个文本文件,我需要动态地替换不同行的大量ID。我注意到“replace”关键字的用法,但是,对于成千上万的占位符替换,最好不要将所有内容都写在特性中
我创建了这样一个模板文件(NTSH.A01)(事实上,有数千行):
SEQ PAT WELL COUNTS CONC PLATENR CODE
29 13 A04 14033 3.6 1 L
32 14 A05 2993 5.4 1 M
32 15 A
我正在尝试测试一个场景,其中我需要发布100次请求(这不是性能测试)。我可以通过设置每100行来使用表功能,其中每行表示一个请求。然而,这将是冗长乏味的
所以我找到了空手道。重复一遍,希望这能解决问题。我只是想知道是否有其他方法来实现我的目标
* def users = function(i){ call read("classpath:v1/createCustomer.feature") { "firstName": '#(firstName)', "lastName": '#(lastNa
空手道api测试-如何将标签名称从命令行读取到功能文件
我的功能文件
功能:验证从maven命令行读取的标记名
背景:
给定url baseURL
当param validation=时,我想在此处读取标记名
然后方法得到
然后状态200
@com_status@all@我想在这里读取标记名
场景大纲:测试标签输入场景
打印我想在这里读取标记名
命令-mvn清洁测试-Dtest=Runner-DargLine=“-Dkarate.env=dev”-Dcucumber.options=“--t
我试着写一些空手道测试,检查一些预期结构的响应。例如,有一个对象如下所示:
{
'true|true':'disabled',
'true|false':'locked',
'false|false':'enabled',
'false|true':'disabled',
'default':'enabled'
}
* def objects = $fields..objects
And match each objects ==
"""
{
key
我的目标是去Amazon.com,搜索一本书并确认它出现在结果中。我断言的结果并不连贯
功能:Amazon UI自动化
背景:
*def baseUrl='1〕https://www.amazon.com/'
场景:搜索项目
给定驱动程序baseUrl
和def searchTerm=“探索它”
和def searchTermEncoded=“Explore+It”
#输入时(“#twotabsearchtextbox”,[searchTerm,Key.ENTER])#ENTER不起作用”\_(
我可以使用karate.info.featureFileName在JS/feature file上获得非常好的功能文件名但是我想知道如何获得java文件上的专长
我需要在beforeStep
到目前为止,我已经得出了以下结论:
System.out.println(context.getFeatureContext().feature.getName());
但是,它打印的是功能名称,而不是文件名FindStoryByID。它返回:
测试图ql按ID查找故事
是否可以通过上下文
我正在用自定义Java库在IntelliJ上编写一个测试项目。为了使用空手道插件的调试功能,可以通过VSCode运行它吗?如果我尝试运行它,会出现以下错误:
[INFO] Scanning for projects...
Downloading from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-
metadata.xml
Downloading from central: http
我目前正在评估空手道作为我们自己的本土API测试的替代品。我有一个服务返回如下数据:
{
"items": [
{
"id": "1",
"enabled": true,
"foo": 1,
},
...
],
...
}
每个项目所属的属性具有不同的特性,我想分别测试它们
例如,为了测试项目启用,我想检查enabled属性
我有25个以上的功能文件涵盖了100多个测试,我有karate-config.js,它有3个“karate.callSingle”函数,如下所示
config.weatherParams = karate.callSingle(
"file:src/test/java/utils/AvailableForecasts.feature",
config
);
config.routingParams = karate.callSingle(
&q
我从下面走过。
如何输入url作为参数
这是我的功能文件。@demo
特性:测试特性
背景:
*配置ssl=true
场景:验证我的服务是否已启动并正在运行
给定url“”
当方法得到
然后在文档中的状态200,请参阅标题“”
例如,如中所示,这可以是您的空手道配置.js:
function() {
return { myUrl: 'https://qa.mygroupservices.int/Version' };
}
那你就可以了
Given url myUrl
我正在测试一个web应用程序API,它使用X509证书对ADFS服务器进行身份验证。
为了使用空手道运行测试,我目前使用一个小型.NET应用程序,该应用程序使用我安装的证书协商JWT for SSO。然后我从Fiddler那里得到了无记名令牌头行,并手动将其放入我的空手道测试中
有一个关于如何将oauth与表单字段一起使用的示例,我正在寻找使用证书时的等效版本
有没有一种聪明的方法可以在不手动嗅探并将其注入测试的情况下获取承载令牌?证书支持将其加入到0.7.0中,您可以在这里找到示例:
希望这能
我尝试使用contains比较json,比较时出现错误
Feature:
Scenario:
Given def cat =
"""
{
name: 'Billie',
kittens: [
{ id: 23, name: 'Bob' },
{ id: 42, name: 'Wild' },
{ id: 43, name: 'Wild', val: 'test', charging_model : {model: "test",overage : "NAN"}
我得到一个URL数组作为响应。我想检查数组中的每个URL是否包含特定的单词。
如何在空手道框架中检查这一点?
我的回应是:
response {
"docs":[{
"url":"http://url/1.com"
"title": "some title"
},{
"url":"http://url/2.com"
"title":"ABC"
}]
}
}
现在我想检查每个url字
我们需要将从登录特性文件返回的cxrf令牌、cookie传递给所有API请求。
现在,我通过向调用的功能文件传递参数,为每个请求传递这些cxrf令牌和cookie
是否有任何方法可以全局设置这些值
呼叫功能:
@userManagement
Feature: Access Profile creation, updating, and deletion Test
如何将PDF/ZIP文件作为netty服务器响应发送?-我们需要模拟语句生成,其中PDF文件需要作为API响应发送 应该很简单,只需将响应设置为字节数组,设置适当的内容类型标题,空手道就可以完成其余工作:
Scenario: pathMatches('/v1/binary/download')
* def responseHeaders = { 'Content-Type': 'application/octet-stream' }
* def Utils = Java.type
我正在尝试在服务的端点上设置/实施性能SLA。一些测试有一个创建步骤,该步骤将使用API调用创建帐户。创建步骤可能需要一两秒钟的时间。我试图在不包括创建时间(1-2秒)的情况下测量/设置GET性能的断言(~50ms)
使用带有硬编码ID的静态feeder文件并不理想,因为我们希望能够在瞬态环境中运行测试,并且我们希望避免假设的脆弱性:
1) 存在特定帐户
2) 没有其他进程对其进行过篡改
我正在考虑的一种方法是:设置一个feeder来创建帐户,然后调用功能文件。feeder可以使用JavaAPI
未记录rampUsers()的一个请求
例如,当我执行create.inject(在(5秒钟内)创建用户(10个)).protocols(协议)
Simulation mock.CatsKarateSimulation已开始。。。
================================================================================
2019-04-22 15:59:37时间已过
----请求-----------------------
我有一个架构问题,因为我想知道如何构造我的功能。我将给出一个我想要实现的示例,没有代码重复
-scenarios
--directoryA
---feature1
----scenario1
----scenario2
--directoryB
---feature2
----scenario3
据我所知,建议将场景1和场景2放在单独的文件中。我的问题来了:
我需要Scenario1和Scenario2才能执行Scenario3(需要userId和userKey)。如果我调用Scenario2
API终结点的查询部分无法获得预期结果
?名称=活动\u作业在执行方案%3Fname=活动\u作业后成为的端点中的此查询
由于此原因,测试用例失败
给定路径“admin/rest/activescript/createscript/?name=Active\u job”
在这种情况下,请建议使用滴滴涕使用param,您可以使用您想要的所有滴滴涕:
使用param可以执行所有DDT操作:
Given path 'admin/rest/activescript/createscript/'
And
无法使用Karate.get()方法访问XML标记值
*def xml1=
"""
12341234
"""
*def temp1=karate.get(“$xml1/S:信封/S:Body/ns2:querySageBalance/ns2:UsageBalance/ns2:LicenseId”)
*def result1=temp1?“是:'否'
*打印速度1
它正在打印“否”,似乎无法识别XPATH。谁能告诉我我做错了什么 我建议你花更多的时间阅读文档和文档
因为您是新来的,所以我提醒您将
我需要在两个场景之间设置延迟,否则API会抛出超出限制的响应代码(每秒查询数)。是否有可能在场景之间设置一些延迟?我不想在这里放置任何javascript延迟,因为无论如何,由于单线程,没有这样的事情。是吗?空手道支持Java和JavaScript,而且由于JavaScript没有类似于sleep的方法,所以您唯一能做的就是将线程Java类型加载到JS中并调用该类型
此示例配置了在每个场景之后调用的JS函数:
Feature: A test to show how to wait between
我有这个:
Background:
* url 'http://guest:guest@localhost:15672'
Scenario:
Given path 'some_path'
是否有其他方法从URL外部指定用户/通行证(在本例中为来宾/来宾)?除非端点实际支持诸如授权之类的标题,否则您所做的一切都没有问题。手动形成的网址,你应该是好的
* url 'http://guest:guest@localhost:15672'
问题一点也不清楚,投票表决通过我要求的是
使用空手道的最佳方式是在功能文件中使用空手道DSL。不过,我只想检查一下,我是否可以利用空手道作为我基于java的框架的库
例如,我知道我可以使用下面的代码,并使用ChromeDevTools自动化Chrome
public class Test {
public static void main(String[] args) {
Chrome chrome = Chrome.startHeadless();
chrome.setLocation("htt
我创建了一个滚动函数,如下所示
Feature: Dynamic page scrolling
Scenario: Scrolling function
* def ScrollHeight = function(){return script("document.body.scrollHeight")
* def ScrollFunction = function(){ script("window.scrollTo(0,document.body.scrol
我已将logback test.xml放在类路径中
没有生成karate.log,我看到有一个名为main.log的文件有时会生成
这是项目结构
这是跑步者档案
package com.org.KarateLearning;
import com.intuit.karate.KarateOptions;
import com.intuit.karate.Results;
import com.intuit.karate.Runner;
import com.intuit.karate.ju
我是第一次发布这个问题,请原谅我的错误
尝试在后台使用afterscenario时出错
意外的“配置”键:“afterScenario”
使用的空手道版本是0.6.2是的,因为afterScenario挂钩是在0.7.0版本中引入的
请升级。请为问题添加更多上下文。谢谢peter,升级到0.7.0版本后工作正常。
我有一个与搜索相关的POST调用。这就像我发送了一些数据作为参数调用,还有一些在有效负载中。在获得302后,它会被重定向。但问题是一旦它被重定向,POST call被转换为GET call,有效负载丢失。因此,我无法获得所需的搜索结果。是否有任何与配置相关的内容可能丢失???是,这是正确的行为。听起来您需要为此测试禁用自动重定向,请参阅。你可以做:
* configure followRedirects = false
然后手动获取重定向位置,如下所示:
* def location = re
我正在使用空手道加特林插件。版本如下
<karate.version>0.9.2</karate.version>
<gatling.plugin.version>3.0.2</gatling.plugin.version>
如果我使用
rampUsers(10) during (10 seconds)
然后生成报告
Simulation Log
RUN performance.Load load 15543258
我正在尝试将来自空手道测试的json结果导入Jira插件
导入在cucumber js 5.1.0中运行良好,但在使用空手道0.9.2时失败
问题似乎在于AssertThat在json中使用功能的“名称”来关联其内部功能名称,以及karate和cucumber js如何使用“名称”和“描述”字段之间的差异
Cucumber js使用来自功能文件本身的功能名称,例如,具有“功能:测试报告”的功能文件将生成具有以下内容的json:
{
"keyword": "Feature",
"n
我如何处理以下空手道错误
javascript评估失败:karate.mapWithKeylist,“name”,TypeError:karate.mapWithKey不是第1行的函数
你可能在玩旧版的空手道。升级
如果仍然卡滞,请执行以下过程:
def list = [ 'Bob', 'Wild', 'Nyan' ]
def data = karate.mapWithKey(list, 'name')
match data == [{ name: 'Bob' }, { name: 'Wild'
我的网页速度非常慢,加载网页大约需要1分钟。因此导致下线失效
* configure driver = { type: 'chromedriver', executable: '/Users/vikas/Apps/chromedriver', showDriverLog: true }
* driver 'http://XXXX.XXX'
我在karate config.js中配置了readTimeout,但没有帮助:
空手道。配置('readTimeout',60000)
错误消息:
ERR
我有一个来自端点的JSON响应,它为我提供了一个嵌套的元素数组。给定一个输入值,我想找出这个值出现的所有索引值,而不仅仅是元素的第一次出现
例如,以下是我的回答:
{
"items": [
{
"vin": "MMTestingVIN00002",
"dealerCode": "1",
"nmscCode": "1",
"warning": {
我有以下data.json文件:
{
"ids": {
"id": "a2mx8m6yvksgu3605c7c1a61d"
},
"second": {
"name": "test2"
},
"third": {
"name": "test3"
}
}
我确实从json
我以json文件的形式提供我的头参数,如下所示
{
"Accept": "application/x-ofx",
"Content-Type" "Multipart/Related; type=text/xml; boundary=---=1234abc;"
}
我还有几个参数,但没有上面这两个重要。因此,当我从json文件中读取此内容并将请求发送到我们的api时,我看到400,当我在调试模式下运行相同的
使用jsonpath检索值A、B、C时出错
错误:
karate.jsonPath(response, "$.code[*~]"), com.jayway.jsonpath.InvalidPathException: Expected wildcard token to end with ']'
def value=karate.jsonPath(响应,“$.code[*~]”)
预期的def值=[“A”、“B”、“C”]
匹配值仅包含所需的值
答复如下:
{
我遇到了一个API端点,得到了如下结果
{
"emp": {
"id": "123",
"firstNm": "test",
"lastNm": "last",
"dob": "200-01-01",
"gender": {
"code": "F",
"name": "Female",
"description": "Female"
1 2 3 4 5 6 ...
下一页 最后一页 共 27 页