Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Karate 空手道测试在每个场景/功能之后进行清理_Karate - Fatal编程技术网

Karate 空手道测试在每个场景/功能之后进行清理

Karate 空手道测试在每个场景/功能之后进行清理,karate,Karate,这是我们在使用空手道进行测试时面临的实际情况- 我们有一个图形API,我们使用空手道进行测试 想象一下- 每个空手道功能在图中创建一个父节点和子节点,以验证某些业务逻辑 然后想象有一套100个测试,这意味着创建了100个小图(数据库记录) 我们希望清理所有这100个小图形,以避免用陈旧的测试数据污染系统 有人能提出一个清理策略吗?应该有助于清理的AfterFeature没有任何用处,因为任何两个功能之间都没有状态/变量共享,即我们永远不会知道在上一个功能中创建的父/子功能的ID 在每个场景中将值

这是我们在使用空手道进行测试时面临的实际情况-

我们有一个图形API,我们使用空手道进行测试

想象一下- 每个空手道功能在图中创建一个父节点和子节点,以验证某些业务逻辑

然后想象有一套100个测试,这意味着创建了100个小图(数据库记录)

我们希望清理所有这100个小图形,以避免用陈旧的测试数据污染系统

有人能提出一个清理策略吗?应该有助于清理的AfterFeature没有任何用处,因为任何两个功能之间都没有状态/变量共享,即我们永远不会知道在上一个功能中创建的父/子功能的ID


在每个场景中将值分配给全局变量(在后台部分中定义)也会被重置,并且无法维护要清理的ID。

您可以在每个功能中调用
afterFeature
,以删除相应的图形。我真的不明白是什么阻止了你这么做


或者,您可以在测试完成后,通过调用Java中的一些代码来删除所有图形。如果您在
karate config.js
中创建一个变量,我想您可以将创建的每个节点的ID添加到此变量中,以便在所有测试通过后知道要删除哪些节点。

我个人建议在开始之前删除一个策略

但是我的建议是使用一个Java单例,您可以通过
karate config.js
灵活地初始化它:

config.SuiteUtils = Java.type('com.myco.SuiteUtils')
在每个场景中,您都可以对其调用方法

* eval SuiteUtils.addId('someId')

然后你可以在JUnit runner中抓住它(因为它是一个单体),然后做你想做的任何事情。

面对同样的问题。有没有办法将参数传递给AfterScenario

因为,在afterscenario中,我们在配置变量或背景变量中设置的任何ID都将被重置

如果我清理了afterScenario或afterFeature中的所有图形,那么我就无法进行并行化


另外,在上面的示例中,这个用karate-config.js编写的语句给出了错误。“config.SuiteUtils=Java.type('com.myco.SuiteUtils')”

我建议您打开自己的问题,如果您还没有找到解决方案,请提供更详细的示例。