2015-12-30 115 views
2

我注意到,每當運行CEST類型的測試用例時,它們會在完成之後保留它們的會話。換句話說,其他測試可能從繼續進行,在此之前的測試將從開始。例如:如何在代碼中編寫正確的Cest格式測試?

class CheckGoogleSearch{ 
    public function checkIfPageIsAccessible(AcceptanceTester $I){ 
    $I->amOnPage('/'); 
    $I->see('something..'); 
    } 

    public function checkIfSearchFieldIsAccessible(AcceptanceTester $I){ 
    // Notice, that it is assumed that we are on the google's home page, 
    //because the above test had it already opened in the past 
    $I->see('Google Search'); 
    } 
} 

該代碼可以被認爲是最佳實踐嗎?或者將來會出現錯誤傾向,在每次測試之前重新設置Google的主頁並做一些額外的準備工作會更好嗎?

+1

這是一個錯誤:https://github.com/Codeception/Codeception/issues/2586 – Naktibalda

回答

0

可以使用

@depends

註解。這樣,如果您的第一次測試失敗,則依賴於前一次測試的下一次測試將被跳過,而不會報告失敗。

class CheckGoogleSearch{ 
    public function checkIfPageIsAccessible(AcceptanceTester $I){ 
    $I->amOnPage('/'); 
    $I->see('something..'); 
    } 

/** 
    * @param AcceptanceTester $I 
    * @depends login 
    */ 
    public function checkIfSearchFieldIsAccessible(AcceptanceTester $I){ 
    // Notice, that it is assumed that we are on the google's home page, 
    //because the above test had it already opened in the past 
    $I->see('Google Search'); 
    } 
} 

Personnaly我不認爲這是好的或不好的做法。這取決於你的測試堆棧。 在您的例子,如果你只有codeception,而且需要更精細的細節沒有其他的整合,做所有作爲測試ID很好,但我的情況我有一個測試情況下,我可以開TESTLINK集成

  1. /訪問頁面
  2. 是否可用
  3. 某些元素我可以做一個搜索,並得到預期的結果

希望這有助於。

快樂測試!

相關問題