2014-01-27 30 views
1

我必須註銷用戶我已經開始使用Specflow,Selenium和PageObject模式進行測試。我想讓場景互相獨立,但是當我開始運行我的測試功能時,我發現我的用戶在第一個場景之後不是匿名的。如果我使用Specflow和Selenium(BDD)

  • 什麼時候應該註銷測試用戶?
    • 在每個場景之前?
    • 每個場景之後?
  • 在每種情況之後,specflow和硒滴狀態可以嗎?
  • 每次我必須撥打page.Logout()嗎?

回答

4

我會說你應該註銷,當它與測試案例相關時。假設你登錄到SO並測試發佈一個新問題,然後寫一個答案併爲每個答案添加兩條評論。在每一步之間登錄和退出將是一件很麻煩的事情,用戶不會在現實世界中這樣做。因此,只需在測試場景開始時登錄,並在完成測試時註銷。

另一個例子是將每個上述步驟作爲不同的用戶來完成,那麼在每一步都需要登錄/註銷。

這也適用於更大的圖片,如果您有多個場景需要登錄用戶,但不依賴於任何用戶的信息,可能只需登錄一次,然後再運行所有這些場景,然後註銷。

Specflow和Selenium不保持狀態,它是您正在測試的系統。例如,如果您的會話存儲在Cookie中,則可以清除所述Cookie並實際將您註銷。但是,這並不是測試系統,因爲最終用戶打算使用它,所以它只是偷工減料並測試系統的不同區域(未經身份驗證的用戶的授權),因此與真實世界的案例沒有很好的關聯。只需使用頁面上的註銷按鈕/鏈接,因爲您正在編寫基於瀏覽器的測試。

+0

'功能:用戶Dashboard' '因爲我想看到儀表盤上的用戶和我info' '方案:獲取question' 名單'鑑於開放用戶profile' '當我通過Reputation'點擊 '變化我reputation' '方案。然後打開清單:獲取question' 名單'鑑於開放用戶profile' '當我通過questions' '然後單擊打開列表我questions' 用戶應登錄適用於兩種情況。我想在Given中登錄我的用戶。 現在我註銷每個功能 '[AfterScenario]'' 公共無效ScenarioTearDown()'' 後{'' Pages.Logout.Invoke();'' }' 它是正確的嗎? – GraDea

+0

這完全沒問題,但如果你想減少登錄數量,而且你的所有功能都不是用戶特定的,那怎麼樣:'功能X''場景:登錄''場景:做#1 '[...]'情景:做#2'情景:做#3'情景:註銷'[...]?您系統的最終用戶是否會註銷並在聲譽變更的開放列表和打開用戶配置文件之間登錄? – t0mppa

+0

應該情景是獨立的嗎? – GraDea

4
I think you should make your test feature wise or module wise. 
  • 如果你考慮在功能的所有進程,並根據流量,你只需要在年底退出

  • 如果您使模塊成爲明智之舉,那麼在完成一個過程後,您可以每次註銷並重新登錄到新模塊。

相關問題