mkdir cypress-start
npm install
# 進入建立的項目目錄 cd /your/project/path cd cypress-start
npm install cypress --save-dev
yarn add
cd /your/project/path cd cypress-start
yarn add cypress --dev
打開運行cpress
./node_modules/.bin/cypress open
或者使用npm bin
html
$(npm bin)/cypress open
或者使用npx
node
npx cypress open
或者使用yarn
shell
yarn run cypress open
sample_spec.js
文件.在 cypress/integration 目錄下建立一個新的文件npm
touch {your_project}/cypress/integration/sample_spec.js
一旦咱們建立了這個文件,Cypress測試引擎會立馬在Integration Tests列表中顯示出來。Cypress會監視你的spec文件,有任何的修改和更新都會立馬顯示出來。
即便咱們尚未寫任何的測試也沒有關係。點擊sample_spec.js
,咱們會看到Cypress會自動打開瀏覽器並運行測試腳本。不過此時會看到No tests found in your file:/usr/local/proj/cypress-start/cypress/integration/sample\_spec.js
的提示。api
在sample_spec.js
文件中書寫以下代碼:瀏覽器
describe('My First Test', function() { it('Does not do much!', function() { expect(true).to.equal(true) }) })
當你保存文件以後會發現,瀏覽器自動從新加載了。立馬就會呈現出測試的結果。
儘管咱們沒有作一些實際的事情,可是這個測試是經過的。學習
接下來讓咱們來編寫第一個失敗的測試。測試
describe('My First Test', function() { it('Does not do much!', function() { expect(true).to.equal(false) }) })
一樣的,一旦咱們保存文件,瀏覽器立馬就會刷新並呈現出一個成功和一個失敗的測試結果。網站
從代碼語法中咱們能看出來url
這是Cypress所依賴庫的一部分。
一般測試都分三個階段:
通俗來講就是咱們設置應用的一個初識狀態,而後咱們作一些操做來改變這個狀態值,而後再來判斷結果是否是跟咱們預期的同樣。
接下來咱們根據如下幾個步驟,經過Cypress來逐步實現:
cy.visit() 的使用很簡單,咱們以訪問百度首頁爲例:
describe('My First Test', function() { it('Visits the baidu', function() { // cy.visit('https://example.cypress.io') cy.visit('http://www.baidu.com') }) })
保存文件以後打開Cypress Test Runner就會發現,瀏覽器裏會自動打開百度首頁。須要值得注意的是咱們的測試,最好是對咱們可控的網站進行測試。
使用contains來查找包含參數內容的元素:
describe('My First Test', function() { it('Visits the baidu', function() { cy.visit('http://www.baidu.com'); cy.contains('百度一下'); }) })
咱們會發現測試經過了。若是咱們把cy.contains('百度一下')
修改成cy.contains('百度一下XXX')
保存文件,就會發現等待一段時間以後提示測試失敗。
咱們在第二步已經獲取到了一個元素,只須要在該元素上進行點擊操做便可:
describe('My First Test', function() { it('Visits the baidu', function() { cy.visit('http://www.baidu.com'); cy.contains('百度一下').click(); }) })
因爲百度首頁的百度一下
按鈕在輸入框沒有輸入任何值得時候點擊,頁面只是會從新加載一下,沒有其餘的改變,因此不太好進行斷言。因此咱們但願在輸入框中輸入一些內容,而後再點擊按鈕,最後再進行斷言。
因爲百度首頁的百度一下
按鈕在輸入框沒有輸入任何值得時候點擊,頁面只是會從新加載一下,沒有其餘的改變,因此不太好進行斷言。因此咱們但願在輸入框中輸入一些內容,而後再點擊按鈕,最後再進行斷言。
describe('My First Test', function() { it('Visits the baidu', function() { cy.visit('http://www.baidu.com'); cy.get('#kw').should(($kw) => { $kw.val('cypress') }); cy.contains('百度一下').click(); cy.url().should('include', '/s?'); }) })
另外能夠對輸入框單獨的進行斷言。經過調用type方法來對獲取到的輸入框進行值的填充。
describe('My First Test', function() { it('Visits the baidu', function() { cy.visit('http://www.baidu.com'); cy.get('#kw') .type('cypress') .should('have.value', 'cypress'); }) })
以上就是一個簡單的測試用例。
我的認爲Cypress比較好的地方在於可調試性很是之好。Time travel、Snapshots、Page events、Console output這些都可以在Cypress 打開的瀏覽器左側看到。以上只是一些簡單的使用。須要進行深刻了解的話查閱官方文檔