Karate 有没有一种好的方法可以根据数据库的状态使用空手道进行测试?

Karate 有没有一种好的方法可以根据数据库的状态使用空手道进行测试?,karate,Karate,例如,我们有一些场景测试特定关系数据库表中的行的基本CRUD操作(使用web服务器的端点)。然后我们有另一个场景,使用名为“getAll”的端点或类似的方法返回该表中的所有行。当然,在空手道中,我们可以验证反应的“形状”是我们期望的使用类似 And match response[*] == #something 但是,有没有一种方法可以实际验证我们是否返回了预期的行数?简言之,是否有一种方法可以严格控制测试数据,以便在测试开始时准确地知道数据库表中的内容?当然,如果我们能够以原子方式运行场景,

例如,我们有一些场景测试特定关系数据库表中的行的基本CRUD操作(使用web服务器的端点)。然后我们有另一个场景,使用名为“getAll”的端点或类似的方法返回该表中的所有行。当然,在空手道中,我们可以验证反应的“形状”是我们期望的使用类似

And match response[*] == #something

但是,有没有一种方法可以实际验证我们是否返回了预期的行数?简言之,是否有一种方法可以严格控制测试数据,以便在测试开始时准确地知道数据库表中的内容?当然,如果我们能够以原子方式运行场景,我们可以使用Java互操作来实现这一点,但据我所知,目前还没有实现这一点的方法。而且,由于空手道测试(默认情况下)的并行性,如果我们不是以原子方式运行,我看不到一种方法可以确保我们在整个测试过程中了解数据库的状态,而不按顺序运行所有空手道场景。

如果您没有看到
狗。功能

但看起来您已经了解了Java互操作。你问的问题很有趣,这是我第一次听说并行执行能力是一个“问题”

通常情况下,我所看到的团队编写的测试范围是在同一
场景中创建的单个实体(例如客户、订单),因此不依赖于套件中的任何其他测试

此外,没有什么可以阻止您将线程数设置为1

请注意,在
功能中
可以请求所有
场景
-s按顺序运行:

不管怎样,如果你真的想沿着这条路走下去,下面是我的建议。您可以编写一个Java助手来锁定数据库,运行几个步骤并解锁,如何做到这一点取决于您自己

还要注意,它实际上会在所有线程之间锁定。这通常用于执行“设置”例程,例如为所有测试获取身份验证令牌。在您的情况下,您可以拍摄数据库的“快照”,以便您的测试可以得出预期的结果。但如果有帮助的话,你可以尝试一下

否则,请假设空手道不支持你的要求。请注意,我完全不鼓励将逻辑“流”拆分为多个“场景-s”: