網(wǎng)紅端到端測試神器Cypress開箱試用報告

最新一期TW的技術(shù)雷達(dá)上出現(xiàn)了一款端到端的開源測試神器Cypress,號稱是不懂代碼的測試人員、業(yè)務(wù)人員都可以使用,同時還不依賴于已經(jīng)是端到端測試扛把子的Selenium,CC先生很好奇,以下是開箱試用報告:

  1. 安裝cypress
    https://www.cypress.io/
    cypress官網(wǎng)下載,Windows下的安裝包大概有233M,下載耗費時間依賴于你的網(wǎng)速咯。
    也可以直接到github的cypress項目下獲取 :
    https://github.com/cypress-io/cypress
    Windows下解壓后點擊cypress的安裝文件,一路默認(rèn),直到出現(xiàn)以下畫面:
    install.jpeg

1)打開cypress客戶端, 點擊箭頭位置,通過資源管理器選擇/CypressTest目錄或者新建一個目錄名稱為CypressTest(此處為自己取的名字,你也可以寫其它名稱)
2)如果/CypressTest目錄下沒有cypress目錄,那么cypress就會在CypressTest目錄下新建cypress目錄,并初始化一些文件


install default.png

想使用npm安裝的小伙伴先要需要配置node的環(huán)境。(此環(huán)節(jié)可Google)

  1. 初始化cypress
    安裝完成后安裝目錄下有一個cypress目錄和cypress.json的配置文件,cypress目錄下的結(jié)構(gòu)如下:
|-- fixtures
|-- integration
|   `-- example_spec.js
|-- plugins
|   `-- index.js
`-- support
    |-- commands.js
    `-- index.js

fixtures 文件夾存放自定義 json 文件,integration 文件夾編寫測試,plugins 和 support 是非必須使用的文件夾,需要自定義指令的時候會用到。

  1. 運行Cypress
    可以點擊examples里的任意一個js文件,它會單獨打開一個瀏覽器并開始執(zhí)行。下圖是執(zhí)行了actions_example.js的情況。


    actions_example.png
  2. 編寫一個測試用例
    設(shè)計一個常見的登錄功能的測試流程

  3. 訪問某個頁面

  4. 查找DOM進行交互,例如輸入,點擊,選擇之類

  5. 進行斷言

describe('InfoQ登錄測試', () => {
  it('登錄頁面', () => {
    cy.visit('https://account.geekbang.org/infoq/signin?redirect=https%3A%2F%2Fwww.infoq.cn%2F')
    cy.get('input[name="cellphone"]').eq(0).type('18013457889')
    cy.get('input[name="password"]').eq(0).type('password')
    cy.get('input[value="登錄"]').click()

    cy.get('body').should('contain', 'Bad login')
  })
})

運行后得到以后結(jié)果:


login_result.png

可以看到以上的運行結(jié)果時有錯誤的提示,出錯的地方來自于DOM中“登錄”按鈕沒有被識別到。
具體的可參考: https://docs.cypress.io/guides/core-concepts/interacting-with-elements.html# 這個就當(dāng)課后作業(yè)了。

以下給一個進階版的腳本,大家可以運行一下看看效果:

describe('should display a correct error message when you enter wrong login information', function () {
 before(function () {
   cy.visit('https://www.amazon.com/')
 })

 var randomEmail = Math.random();
 var randomPassword = Math.random();

 it('displays a correct error message', function () {
   cy.get('#nav-your-amazon').click()
   cy.get('#ap_email').type(randomEmail + '@gmail.com')
   cy.get('#ap_password').type(randomPassword)
   cy.get('#signInSubmit').click()
   cy.get('#auth-error-message-box').should('be.visible')
 })
})

上面的代碼涉及到了before函數(shù)的用法。cypress本身是支持before,beforeEach的這類測試套件的用法。

試用小結(jié)
Cypress感覺非常容易上手而且它使用了Mocha和Chai來寫測試用例,已有Mocha和Chai使用經(jīng)驗的同學(xué)可以很容易轉(zhuǎn)換,對于已經(jīng)習(xí)慣使用Selenium+Python/Java的同學(xué)來說有沒有必要一定要轉(zhuǎn)過來需要進一步考慮一下,而且Selenium Grid對分布式的支持目前在Cypress上還沒有看到很好的實現(xiàn)。

具體一點來說,喜歡Cypress的理由:

  • cypress不使用Selenium:我們已經(jīng)嘗試過的大多數(shù)端到端工具都在使用Selenium,這就是為什么他們有幾乎相同的問題。
  • cypress很好地支持任何框架或網(wǎng)站:有數(shù)百個項目使用最新的React,Angular,Vue,Elm等框架。cypress在舊服務(wù)器渲染頁面或應(yīng)用程序上也同樣有效。
  • cypress測試只用JavaScript編寫:雖然您可以從任何其他語言編譯成JavaScript,但最終測試代碼在瀏覽器內(nèi)部執(zhí)行。沒有語言或驅(qū)動程序綁定 ,只有JavaScript。
  • 沒有依賴關(guān)系,你把測試放在package.json中就是這樣。
  • 與我們已經(jīng)實驗過的Selenium的端到端工具相比,cypress的運行速度要快得多。集成在CI中的時候速度的優(yōu)勢可以盡情體現(xiàn)。
  • 你的腳本的每一步都有屏幕截圖,如果有任何錯誤的通過或失敗的測試,這可能非常有用,所見即所得,這一點和以前大家用LoadRunner等老牌的商用工具的體驗感是一樣的棒,非常有利于調(diào)試!
  • 當(dāng)然cypress也有一個明確的cyntax,容易閱讀,從學(xué)習(xí)成本的角度出發(fā)大部分人都會喜歡它!

不喜歡cypress的理由:

  • 該結(jié)構(gòu)與其他Selenium端到端工具不同,之前習(xí)慣使用其它E2E測試工具的使用者來說,您可能需要花費更多時間來理解結(jié)構(gòu)并找到創(chuàng)建腳本的最佳方法。
  • 社區(qū):由于cypress相對較新,社區(qū)規(guī)模較小。 你很難找到問題的答案等。
  • 特征。 沒有文件上傳支持。 沒有跨瀏覽器測試。 誰知道什么時候會涵蓋這些東西,對于大項目這些功能至關(guān)重要。
  • 頁面對象模型。 這已經(jīng)被時間證明了。 賽普拉斯支持一種可能引起爭議的不同方法。
  • 它僅適用于一個客戶端(語言),即僅適用于JavaScript。 因此,要使用它,您必須知道JavaScript:但是這可能是JavaScript應(yīng)用程序的一個優(yōu)勢,同時也將是cypress的一個缺點。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 洞見SELENIUM自動化測試 寫在最前面:目前自動化測試并不屬于新鮮的事物,或者說自動化測試的各種方法論已經(jīng)層出...
    厲鉚兄閱讀 6,832評論 3 47
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評論 19 139
  • Day 4 測試腳本講義 經(jīng)過了前面三天的課程內(nèi)容,我們應(yīng)該初步基本的掌握了手工測試。接下來我們來面對另一個高度的...
    厲鉚兄閱讀 5,303評論 1 10
  • 基于 SELENIUM 的自動化測試架構(gòu) 非常感謝各位查閱本篇文章,筆者在此感謝各位。 目前市面上有分門別類的自動...
    厲鉚兄閱讀 6,219評論 6 43
  • 一個男人憑身份證僅能定制一枚的鉆戒,一生一世只愛一人,一句“I do”,一生相伴
    白眉小耳閱讀 195評論 0 3

友情鏈接更多精彩內(nèi)容