2017-01-30 78 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

相關問題