2016-11-16 105 views
6

兩個Laravel和硒使用PHPUnit的斷言。 在這兩個Laravel和硒你寫的代碼,使測試(而不是選擇的東西GUI做的;例如open: google.comwrite in: name->queryInput text:"test search"click: name->searchButton)。 Laravel和硒兩者都能夠訪問網頁,提交表單和檢查結果。通過向cron添加PHPUnit命令,您可以在Laravel和Selenium中自動執行測試。爲什麼使用Selenium和Laravel進行測試?

所以我爲什麼要用Selenium在Laravel進行測試?

我能想到的唯一的事情是,硒可以讓你選擇其中的頁面將被打開一個瀏覽器。因此,如果您的測試只通過Laravel測試通過,那麼某些瀏覽器(如Internet Explorer)可能會失敗。

this Laracast作者說在1:00:

一個問題與[在Laravel測試]時,它不包括JavaScript的支持。所以相反,我們僞造請求,我們得到響應,我們正在檢查它,但在該過程中沒有涉及瀏覽器或JavaScript引擎。

但什麼是僞造請求的利弊? Selenium如何提供幫助?一個例子是完美的。

回答

6

你其實已經得到了答案。你說的是正確的。

Laravel集成測試將在內部模擬請求,並可以使用一定的優勢(如禁用中間件懲戒刺探等)爲確保要隔離一個特定的問題(測試案例) 。這個想法是測試應用程序,而不會將第三方組件的副作用引入戰場,這將是:客戶端瀏覽器,外部服務這些類型的測試非常快速和輕量級。也非常適合測試API調用。

所以是完全覆蓋所有的情況下,在至極你真的想覆蓋這些情景受第三方組件的副作用,像的JavaScript在任何瀏覽器,IE,火狐,甚至在不同的版本中。您可以理解這一點,試圖儘可能接近真實世界場景,其中客戶端瀏覽器實際上可能會干擾您的應用程序的預期行爲。另外,如果您想直觀驗證CSS或交互式組件,則可以觸發屏幕截圖。 有一點很重要,因爲這個瀏覽器鉤子,這些測試的執行速度會比較慢。

這樣做的外賣應該是你不需要要麼使用一個或另一個專門。它們的工作方式相似,但最終它們提供了不同的功能。您可以進行一系列Laravel集成測試,以及一系列針對您的重要測試的Selenium測試。 I suggest you this Laracast

我可能會在我的項目中爲您提供an example,這與您無關,但至少有一種方法可以顯示兩種測試類型可以共存於同一個項目中。

希望這會有所幫助!

+2

感謝您的回答。所以值得安裝所有的Selenium組件,因爲它會模仿*真實世界的場景*,正如你所說的那樣。但是,看起來你應該總是使用硒,因爲這是你的目標。我觀看了Laracast和imo,可以用Selenium編寫相同的測試,然後從現實世界中*更多*。那麼你能否給出一個瀏覽器根本不重要的例子,所以我知道何時使用Laravel的集成測試以及何時使用Selenium?我知道這擴展了我的問題,但能夠有一個完整的圖片將是很好的。 – user1

+2

那麼,我沒有提到一些非常重要的東西。硒測試有一個缺點,由於與瀏覽器的集成,它們速度較慢,而且它們依賴於具體的瀏覽器實例作爲依賴關係。在我的特殊情況下,我更喜歡使用大多數Laravel集成測試,而Selenium只用於那些需要驗證特定場景(例如涉及JS或特定瀏覽器中的頁面呈現出於特殊原因)驗證的測試。 – alariva

+2

@mr_jigsaw我認爲瀏覽器根本就不重要,只要你主要關注應用程序邏輯(更多的是後端)。當你更關注UI/UX時使用Selenium是有意義的,特定於瀏覽器的功能,這可能只是您決定測試的幾個用例情景(更多的是前端) – alariva

相關問題