在Testcafe中运行并发测试时,有没有一种方法可以区分一个浏览器实例和另一个?
假设我们有两个测试。
- 创建一些实体,然后对其进行更改,并验证更改是否正确应用
- 另一个会删除所有实体,并验证是否删除了所有实体
如果我们并行运行这些测试,它们将相互干扰。因此,必须有一种方法来接受这种并发性并将这些测试与一些原语同步,或者使它们并行并在隔离的沙盒中运行。
我宁愿选择第二种选择。它可能是类似的东西
test('Some test', async t => {
await useSandbox(t.browser.alias, t.browser.os.name, t.browser.instanceId);
... rest of the test
})
但是AFAIK没有办法在测试代码中区分一个浏览器实例和另一个。还是有?
TestCafe没有影响另一个测试的测试执行的机制。当TestCafe并行启动测试时,它不认为一个测试会干扰另一个测试。
TestCafe以清晰的cookie、存储和用户配置文件开始每一次测试。因此,如果您的数据保存在localStorage中,则每个测试都将独立运行。然而,如果你的数据保存在服务器端(即数据库中(,那么TestCafe就不能在沙箱中使用它,因为所有测试都通过同一个网站与DB交互。
在这种情况下,最好一个接一个地运行这两个测试,而不是同时运行。