当前位置: 首页 > 知识库问答 >
问题:

空手道中特征文件的异步执行

齐凯康
2023-03-14

我有一个活动,我使用空手道模拟。其中一个API返回一个响应,但在一段延迟后,它还会调用另一个API(模拟工作负载的处理)

我希望达到以下目标:

Client --> Calls Karate Mock (Call A)
Client <-- Karate Mock Returns
----Interaction ends here ----

After 30 seconds or so..
Client Listener <-- Karate Mocks Posts (Call B)

我现在的处境是

Blocking: 

Client --> Calls Karate Mock (Call A)
Client Listener <-- Karate Mocks Posts (Call B)
Client <-- Karate Mock Returns (This is blocked until Call B happens)

在一个单独的功能文件中调用B,我可以从另一个功能文件中调用它。

所以我想我在空手道中与异步呼叫作斗争。

我确实创建了一个实现异步执行的Java类,但我不确定如何从它调用功能文件。这将立即为我解决这个问题。

还有没有更好的方法?

共有1个答案

储仲渊
2023-03-14

实际上,这应该很容易,使用Java线程,这个例子应该很清楚:

Scenario: pathMatches('/hardcoded')
    * def response = { hello: 'world' }
    * def fun = function(){ karate.log('*** before'); java.lang.Thread.sleep(5000); karate.log('*** after') }
    * eval new java.lang.Thread(fun).start()

请注意,JSfunction(){}会自动转换为Java runnable,这很方便。您应该能够使用karate从JS函数调用第二个功能。call()它完成您需要的帖子的工作。

 类似资料:
  • 我试图建立一系列触发空手道场景的加特林测试。我对功能文件所做的更改只是偶尔被加特林发现。例如,在下面的功能文件代码中,运行前四个项目(包括注释掉的“关系”行): 其余的不是。请参阅运行结果的附加屏幕:在此输入图像描述 POM供参考版本: 我怀疑像编译文件这样的东西在进行更改时不会刷新或重新编译。

  • 我遵循DemotestSelected.java示例在我的空手道框架中运行特性文件。当我在Intellij中运行它们时,它工作得很好。但当我将其转换为jar并运行时,它会抛出以下错误。 java.lang.RuntimeException:java.io.FileNotFoundException:file:\c:\src_path\target\app-jar-with-dependencies

  • 我正在使用空手道测试REST API,现在我正在尝试并行运行特性文件: 该测试仅并行运行3个特性文件,并不运行所有5个特性。我从CucumberRunner.Parallel函数中得到了这段代码:

  • 第一特征给定ur“” def有效负载=read(") 请求有效载荷 肥皂行动" 值= /Envelope/Body/Response/Result/Num print value#按预期正确打印值 second.feature背景:*def fetch=read('first.feature')*def data=call fetch 情景: 打印数据。response#以json格式打印soap

  • 我有3个功能文件,我试图在TestRunner类上使用@CucumberOptions(features=“classpath:karate/karate/APIM_LAYER.feature”)在空手道中执行特定功能。但在执行时,我们能够找到“目标/确定火灾报告路径”中存在的所有3个功能文件的报告。请告知我们是否有解决此问题的方法。

  • 我试图执行一个功能文件,需要从另一个功能的查询参数。 以下是功能文件:1。此文件调用两个要素文件。第一个功能文件在数据库中添加一条记录并返回json响应。我必须使用响应中的属性,并且必须传递到另一个特性。请在下面查找功能文件。 特色:背景: 场景:给定调用读取('test_add.feature') 功能名称-测试获取。功能:添加新的Nat捆绑设备 背景: > url baseUrlWithCon