Cypress系列(6)- Cypress 的重試機制_如何寫文案

※教你寫出一流的銷售文案?

銷售文案是什麼?A文案是廣告用的文字。舉凡任何宣傳、行銷、販賣商品時所用到的文字都是文案。在網路時代,文案成為行銷中最重要的宣傳方式,好的文案可節省大量宣傳資源,達成行銷目的。

如果想從頭學起Cypress,可以看下面的系列文章哦

https://www.cnblogs.com/poloyy/category/1768839.html

 

前言

重試(Retry-ability)是 Cypress 的核心概念之一,有助於我們寫出更加健壯的測試

 

命令和斷言

Cypress 測試中經常被調用的兩種類型,仍以前面說到的 testLogin.js 為栗子

最後的斷言解析

檢查標籤為 h1 的元素是否包含 jane.lane

 

斷言的一般步驟

  1. 用 cy.get() 查詢應用程序的DOM,找到元素
  2. 針對元素或元素列表進行斷言嘗試 ,我們示例中為 .should(“contain”, “jane.lane”) 

 

關於實際工作中的靈魂拷問

現在的 web 應用基本都是異步的,如果出現以下情況又應該怎麼處理呢?

  1. 如果斷言發生時,應用程序尚未更新DOM怎麼辦?
  2. 如果斷言發生時,應用程序正在等待其後端響應,而導致頁面暫無結果怎麼辦?
  3. 如果斷言發生時,應用程序正在進行密集計算,而導致頁面未及時更新怎麼辦?

上述情況再測試中經常會發生,一般處理方法是在斷言前價格固定等待時間(或像 selenium 一樣顯式、隱式等待),但仍有可能會發生測試失敗

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

擁有後台管理系統的網站,將擁有強大的資料管理與更新功能,幫助您隨時新增網站的內容並節省網站開發的成本。

 

Cypress 如何優美的解決上述問題

  1.  cy.get() 命令之後的斷言通過,則該命令成功執行完成
  2.  cy.get() 命令之後的斷言失敗,則 cy.get() 命令會自動重新查詢 web 應用程序的 DOM 樹,然後 Cypress 將再次嘗試對 cy.get() 返回的元素進行斷言
  3. 如果斷言仍然失敗, cy.get() 仍然會重新查詢 DOM 樹….以此類推
  4. 直到斷言成功 或 cy.get() 命令超時

總結

  • 其實很像selenium 的顯式等待,只不過 Cypress 是全局的,不用針對元素去單獨識別
  • Cypress 這種自動重試機制避免了在測試代碼中編寫硬編碼等待(強制等待),使測試代碼更加健壯

 

多重斷言

  • 在日常測試中,有時候需要多重斷言,即獲取元素後跟多個斷言
  • 在多重斷言中,Cypress 將按順序進行斷言,即當第一個斷言通過後,會進行第二個斷言,通過後進行第三個斷言…以此類推

 

列表的栗子

需求

  • 假設一個下拉列表,存在兩個選項,第一個選項是“iTesting”,第二個選項是“testerTalk”
  • 我們需要驗證兩個選項的存在,並且順序正確,代碼片段如下

代碼解析

  1. 總共有三個斷言:一個 should() ,兩個 expect() 
  2. and() 斷言實際上是 should() 斷言的別名,它是 should() 的自定義回調斷言,其中包含兩個 expect() 斷言
  3. 在測試執行過程中,如果第二個斷言失敗了,那第三個斷言永遠不會執行
  4. 如果導致第二個斷言失敗的原因被找到且修復了,且此時整個命令還沒有超時,則在進行第三個斷言時,還會再次重試第一、第二個斷言

 

重試(Retry-ability)的條件

前言

  • Cypress 並不會重試所有命令,當命令可能改變被測應用程序的狀態時,該命令將不會重試(如: click() ,畢竟要點擊)
  • Cypress 僅會重試那些查詢 DOM 的命令: cy.get() 、 find() 、 contains() 等
  • 可以通過官方文檔 Assertions 部分來檢查是否重試了特定命令:https://docs.cypress.io/zh-cn/guides/references/assertions.html#Chai

 

常用的可重試命令

 

重點啦!

重試的超時時間默認是 4秒,對應的配置項是: defaultCommondTimeout ,如果想改重試的超時時間,在 cypress.json 文件改對應的字段值即可

 

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

※別再煩惱如何寫文案,掌握八大原則!

什麼是銷售文案服務?A就是幫你撰寫適合的廣告文案。當您需要販售商品、宣傳活動、建立個人品牌,撰寫廣告文案都是必須的工作。