空手道测试会在每种情况/功能后清除

时间:2019-05-10 08:30:11

标签: karate

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

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

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

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

我们希望清除这100个小图,以避免用过时的测试数据污染系统。

有人可以在这里提出清理策略吗?应当有助于清除的AfterFeature没有用,因为任何两个功能之间都没有状态/变量共享,即我们永远不会知道在先前功能中创建的父母/孩子的ID

在每种情况下,将值分配给全局变量(在“背景技术”部分中定义)也会重置,并且无法维护要清除的ID。

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

我个人建议启动前删除策略。

但是我的建议是使用Java单例,您可以通过karate-config.js巧妙地初始化它:

config.SuiteUtils = Java.type('com.myco.SuiteUtils')

在每种情况下,您都可以在其上调用方法。

* eval SuiteUtils.addId('someId')

然后您可以在JUnit运行器中将其抓取(因为它是一个单例),然后做您想做的任何事情。

答案 2 :(得分:0)

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

因为,在这种情况下,我们在配置变量或后台变量中设置的ID都会被重置。

如果我在afterScenario或afterFeature中清理所有图形,那么我将无法并行化。

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