經過提供輸入並確保輸出符合預期,對諸如函數或類等級別的單個單元進行測試。html
測試過程跨多個單元,好比組件API、UI等,確保單元間協同工做符合預期。前端
也叫e2e測試,經過編寫測試用例,自動化模擬用戶操做,確保組件間通訊正常。vue
CyPress是在mocha式API基礎上構建的一套開箱可用的測試框架,對比其餘測試框架,它提供一套本身的最佳實踐方案,無需其餘測試工具庫,配置方便簡單但功能異常強大,可使用webpack項目配置,還提供了一個強大的GUI圖形工具。因此做爲常用JavaScript開發語言的人,會很是容易入門這個自動化測試框架。node
在vue-cli3中也對自動化測試作了集成,在vue-cli中有兩種自動化測試框架,其中的一種就是cypress,這也是爲何我選擇這一款自動化測試框架,針對咱們目前項目大部分使用的vue技術棧,也能更好的應用於實際業務當中。webpack
CyPress能夠經過yarn add cypress 或 npm install cypress安裝,也能夠在vue-cli中選擇集成,而工程目錄裏也會出現一個cypress的文件夾,用來存放測試用例。下面簡要介紹下cypress下的各個子文件夾的做用:web
cypress //cypress目錄
---- fixtures //測試數據配置文件,可使用fixture方法讀取
---- integration //測試腳本文件
---- plugin //插件支持
---- support //支持文件
-cypress.json //cypress全局配置文件複製代碼
按照如上所示安裝好以後,下面就來運行一下來了解這個框架的測試流程。在vue-cli中集成的cypress有已經配置好的命令可運行npm run test:e2e,而在老的項目中咱們可使用node_modules/.bin/cypress open的命令運行。chrome
輸入運行命令以後,咱們會看到出現以下的界面。vue-cli
在這個頁面中咱們會看到咱們所編寫的測試用例的js文件,而後能夠選擇一個或者選擇Run all specs來執行用例文件。運行以後會打開一個新的chrome頁面,這裏咱們能夠看到用例文件中的每一條測試語句的執行狀態,而且能夠看到他的執行過程和執行結果(綠色表示成功、紅色表示失敗)。npm
在chrome頁面的右半部會顯示每一個節點的快照信息,而且可以對比以前和以後的變化差異,能夠容易的讓開發者感覺到執行某個測試語句先後頁面發生的變化。json
在這裏會對CyPress的語法作一個簡要介紹,具體可查看官方文檔。
查詢的語法很是近似於jQuery的元素選擇器,例如:JQ->$('.my-selector')、CY->cy.get('.my-selector')
匹配內容是否符合預期使用 cy.get('XX').contains('inner'),inner爲預期的內容值
當須要在輸入框輸入值時使用type關鍵字
須要判斷元素的內容、value、類名等信息可以使用should('have.attributs',value)
cy.get('button').then(($btn)=>{})
多種動做命令:blur、focus、clear、check、select等
可根據不一樣的需求修改超時時長(大多數命令超時默認爲4秒)
可使用if else進行條件判斷
CyPress提供了一些鉤子函數before、beforeEach、after、afterEach
對於鉤子函數的功能介紹:
大多數測試工具(如Selenium)經過在瀏覽器外部運行並在網絡上執行遠程命令來運行。Cypress偏偏相反,Cypress在與你的應用程序相同的生命週期裏執行。
Cypress背後是Node服務進程。Cypress和Node進程不斷進行通訊,同步和執行任務。訪問這兩個部分(前端和後端)使咱們可以實時響應你的web應用程序的事件,與此同時也能完成須要更高權限的任務。
在負責的系統中會有一些比較穩定的模塊(不常常改動),在有些時候改了其餘模塊的一小塊可能會影響到穩定的模塊,而這時就須要對這個模塊作迴歸測試以保不受影響能夠穩定使用,若是每一次都須要開發人員對其進行迴歸是耗時耗力的,而這時就須要了咱們爲這個模塊編寫的e2e測試用例,只須要執行一下這個測試用例就能夠看到模塊的各項功能是否可以完整運行。
測試用例是一個能夠上傳到倉庫的文件,因此爲了方便別人維護測試用例或者是瞭解你的測試流程,請務必要寫上測試流程的註釋,或者創建一個專門用於統計測試用例的文檔來記錄有哪些測試用例和用例的內容,這樣可以很好的保證用例的完整性、可讀性和可維護性。
目前cypress沒有內置測試覆蓋率的統計功能,目前可使用Chrome自帶的來查看。在GUI打開的測試瀏覽器中打開devtools,切換到Sources,按下cmd+shift+p(或ctrl+shift+p),輸入coverage,選擇從新刷新並統計代碼執行覆蓋率。