2017-01-30 74 views
-1

我已经使用Selenium和Nunit为Web应用程序实现了并行测试,并且希望以某种方式为每个测试使用一个唯一用户。我认为可能会为用户填充一个字典,其中每个键的值为1,然后每次使用用户时更新字典值,以便下一个测试使用具有1值的第一个可用用户。然而,这不适合我。任何人都可以推荐任何其他的可能性来完成这个?Selenium,为每个并行登录设置唯一用户

Regards

+1

'但是这不适用于我'不是很有用的信息 – Reniuz

+0

看来,由于测试运行在同一时间,第一个没有时间在第二个字典读取之前更新字典。 – alex

回答

1

我认为根本原因问题是在您的夹具策略。如果你确实想要每个测试都有独特的用户,那么你不需要保留已经使用过的用户。我建议你看Fresh Fixture模式或使用any of the others,这是最适合你的套餐。测试依赖于其他测试是众所周知的测试/代码气味。你已经有了你的测试并行运行,为什么回去并依靠特定的执行顺序(再次依赖)?

如果你仍然需要

我想,也许填充用户提供了一个字典键的每个值1,然后每一个用户使用,以便下一次的测试时间更新字典值使用具有1值的第一个可用用户。

你可以看一下Object pool模式,因为它可以让你:

池的客户端会从池中请求对象,并在返回的对象上执行操作。当客户端完成时,它将对象返回到池中而不是销毁它;

而且,由于您在.Net堆栈上,因此请考虑使用ConcurrentDictionary

+1

谢谢。现在我已经实现了SetUpFixture,并在那里创建了一个字典。根据SetUpFixture的定义,这仅在所有测试之前创建一次。然后,我为每次测试都锁定字典,以挑选用户。 – alex

相关问题