精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

使用Cypress需要避免的5個E2E測試錯誤

譯文
開發 開發工具
在測試應用程序時,端到端(E2E)測試提供了最可靠和最有效的方法。

【51CTO.com快譯】不過,端到端測試是困難的、耗時的,并且有一大堆問題需要解決。但如果你用對了工具的話,效果可能會事半功倍。

??

Cypress測試框架提供了快速、簡單、可靠的瀏覽器測試。能夠幫助解決端到端測試的大多數痛點,并使編寫測試變得有趣。但是,有一些錯誤是要避免的,這樣就可以充分利用Cypress的優勢。

在這篇博文中,我們將介紹5個常見錯誤,這些錯誤在使用Cypress測試時應該避免。

 使用id和class來選擇元素

使用id和class來選擇元素是有問題的,因為它們主要用于行為和樣式目的,因此經常會發生更改。這樣做會導致你可能不想要的脆弱測試。

相反,你應該始終嘗試使用data-cy或data-test-id。因為它們是專門用于測試目的的,這使得它們與行為或樣式分離,因此更可靠。

例如,假設我們有一個input元素: 

<input
id="main"
type="text"
class="input-box"
name="name"
data-testid="name"
/>

應該使用id或class來測試這個元素,而應該使用data- tested: 

// Don't
cy.get("#main").something();
cy.get(".input-box").something();

// Do
cy.get("[data-testid=name]").something();

有時需要使用文本(如按鈕標簽)來進行斷言或操作。盡管這很好,但請記住,如果文本更改,則會導致測試失敗。

將Cypress命令視為Promise

Cypress測試由Cypress命令組成,例如Cypress .get和Cypress .visit。類似于Promise,但不是真正的Promise。

這意味著,我們不能在使用它們時像使用async-await這樣的語法。例如: 

// This won't work
const element = await cy.get("[data-testid=element]");

// Do something with element

如果你需要在一個命令完成后執行某些操作,你可以在cy.then命令的幫助下完成。它將保證只有在前一個命令完成后,才會運行下一個命令。

// This works
cy.get("[data-testid=element]").then($el => {
// Do something with $el
});

在使用像Promise這樣的命令時,它可能不會像你期望的那樣工作,因為Cypress命令類似于Promise,但不是真正的Promise。

在Cypress測試中使用任意等待

在編寫Cypress測試時,我們希望在真實場景中模擬真實用戶的行為。由于網絡延遲和設備限制等因素,現實世界中的應用程序是異步的和緩慢的。

在為這類應用程序編寫測試時,我們傾向于在cy.wait命令中使用任意值。這種方法的問題在于,雖然它在開發中運行良好,但不能保證一直穩定。因為底層系統依賴于像網絡請求這樣的東西,這些東西是異步的,幾乎不可能預測的。

// Might work (sometimes)
cy.get("[data-testid=element]").performSomeAsyncAction();
// Wait for 1000 ms
cy.wait(1000);
// Do something else after the action is completed

相反,我們應該等待視覺元素加載完成。它不僅更接近真實世界的用例,而且給出了更可靠的結果。想想看,使用應用程序的用戶很可能會等待加載之類的視覺線索來確定操作的完成,而不是等待任意時間。

// The right way
cy.get("[data-testid=element]").performSomeAsyncAction();
// Wait for loading to finish
cy.get("[data-testid=loader]").should("not.be.visible");
// Now that we know previous action has been completed; move ahead

例如,Cypress命令cy.get在斷言之前等待元素,當然你可以修改預定義的超時值,timeout很酷的一點是它們只會等待條件滿足,而不是像cy.wait命令那樣等待整個持續時間

在Cypress測試中使用不同的域

Cypress的一個限制是,它不允許在單個測試中使用多個域名。

如果你嘗試在單個測試塊中使用多個域,Cypress將拋出安全警告。

如果真要在一個測試中需要訪問多個域。我們可以通過將測試邏輯分割到單個測試文件中的多個測試塊來實現。例如,你可以把它想象成一個多步驟測試:

describe("Test Page Builder", () => {
it("Step 1: Visit Admin app and do something", {
// ...
});

it("Step 2: Visit Website app and assert something", {
// ...
});
});

我們在Webiny使用類似的方法來測試Page Builder應用程序。

當以這種方式編寫測試時需要記住的幾件事:

  1. 你不能依賴持久存儲,無論是測試塊中的變量,還是本地存儲。因為,當我們使用配置中定義的baseURL以外的域發出一個Cypress命令時,Cypress會執行一個拆除和完全重新加載。
  2. 由于上述相同問題,"before"和 "after"這樣的塊將會為每個這樣的測試塊運行。

所以在采用此方法并相應地調整測試之前,請注意這些問題。

混合異步和同步代碼

Cypress命令是異步的,它們不返回值,而是生成值。

當我們運行Cypress時,它不會立即執行命令,而是串行讀取它們并將它們排隊。只有在它一個一個地執行它們之后。因此,如果你編寫的測試混合了異步和同步代碼,你將得到錯誤的結果。例如:

it("does not work as we expect", () => {
cy.visit("your-application") // Nothing happens yet

cy.get("[data-testid=submit]") // Still nothing happening
.click() // Nope, nothing

// Something synchronous
let el = Cypress.$("title") // evaluates immediately as []

if (el.length) {
// It will never run because "el.length" will immediately evaluates as 0
cy.get(".another-selector")
} else {
/*
* This code block will always run because "el.length" is 0 when the code executes
*/
cy.get(".optional-selector")
}
})

相反,使用cy.then命令在命令完成后運行代碼。例如:

it("does work as we expect", () => {
cy.visit("your-application") // Nothing happens yet

cy.get("[data-testid=submit]") // Still nothing happening
.click() // Nope, nothing
.then(() => {
// placing this code inside the .then() ensures
// it runs after the cypress commands 'execute'
let el = Cypress.$(".new-el") // evaluates after .then()

if (el.length) {
cy.get(".another-selector")
} else {
cy.get(".optional-selector")
}
})
})

總結

Cypress是端到端測試的強大工具,但有時我們會犯一些錯誤,這讓體驗變得不有趣。通過避免常見的錯誤,我們可以讓端到端測試過程更加順利和有趣。

【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】


責任編輯:黃顯東 來源: hackernoon.com
相關推薦

2024-05-21 10:35:34

2013-06-14 09:41:07

網絡規劃工程外包華為

2020-12-09 14:13:37

人工智能機器學習技術

2024-05-29 12:35:34

2018-04-25 06:21:57

多云云計算IT

2020-02-28 08:29:34

IT網絡信息

2021-03-09 09:52:55

技術React Hooks'數據

2019-08-22 08:53:57

IT現代化數字化轉型

2019-05-16 08:17:47

多云存儲云計算

2011-06-08 17:07:55

本地化測試

2021-12-21 11:16:04

云計算云計算環境云應用

2021-11-30 13:59:22

數據治理大數據數據分析

2019-08-30 11:12:52

防火墻網絡安全

2023-05-06 10:50:41

IT培訓IT團隊

2021-01-14 10:03:38

大數據數據業務數據集

2019-12-03 18:51:36

SQL數據庫MySQL

2020-05-19 10:14:01

容器容器安全

2022-01-11 10:50:35

數據治理CIOIT領導

2012-06-04 17:02:48

華為CDMA商用終端

2014-02-25 10:25:52

單元測試測試
點贊
收藏

51CTO技術棧公眾號

91久久精品国产| 亚洲三级免费看| av女优在线播放| 激情小视频在线| 久久99久久精品| 欧美国产亚洲精品久久久8v| 成年人网站免费在线观看| 99热播精品免费| 亚洲国产美女搞黄色| 午夜精品福利一区二区| 精品久久久久久亚洲综合网站| 亚洲国产黄色| 日韩中文字幕视频| 女~淫辱の触手3d动漫| 国产精品一区二区三区av | youjizz亚洲女人| 成人性生交大片免费看96| 欧美日韩一卡二卡三卡 | 日韩高清三级| 欧美熟妇另类久久久久久不卡 | 91免费看国产| 波多野结衣在线观看一区| 国产综合视频| 美女久久久久久久久久久| 偷拍夫妻性生活| 精品嫩草影院| 日韩色视频在线观看| 在线观看av网页| 亚洲欧洲高清| 香蕉加勒比综合久久| 男人j进女人j| 黄色视屏免费在线观看| 国产午夜一区二区三区| 国产精品免费区二区三区观看| 一级黄色大片网站| 日韩精品成人一区二区三区| 91国内揄拍国内精品对白| 激情小说中文字幕| 欧美/亚洲一区| 久久成人一区二区| 欧美h片在线观看| 成人在线亚洲| 中文字幕欧美日韩| 免费在线观看a视频| 视频一区中文| 亚洲色图15p| 一区二区三区四区免费| 五月国产精品| 亚洲女在线观看| 亚洲黄色在线网站| www.日本在线播放| 99久久国产免费| 激情深爱一区二区| 国产在线高清精品| 中文字幕欧美人妻精品一区蜜臀| 久久国产免费| 国产精品v日韩精品| 亚洲欧美日韩激情| 日韩电影免费一区| 国产精品你懂得| 中文字幕+乱码+中文字幕明步 | 教室别恋欧美无删减版| 日韩黄在线观看| 女人被狂躁c到高潮| 国产欧美日韩免费观看| 亚洲色图五月天| 日本美女bbw| 97国产精品| 欧美成人精品在线| 精品无码人妻一区二区三| 激情视频一区二区三区| 91黑丝在线观看| 国产成人一级片| 日本欧美一区二区在线观看| 国产日韩在线视频| 亚洲成人久久精品| 91麻豆免费观看| 香蕉久久免费影视| av在线导航| 欧美日韩国产丝袜另类| 日韩欧美在线免费观看视频| 国产a亚洲精品| 日韩美女天天操| av鲁丝一区鲁丝二区鲁丝三区| 免费观看久久av| 久久精品国产2020观看福利| 久久久久久久久久久97| 久久精品成人| 亚洲综合最新在线| 亚洲av成人无码网天堂| 亚洲国产成人午夜在线一区 | 无码 人妻 在线 视频| 日韩在线精品| 韩国视频理论视频久久| 亚洲欧美日韩一区二区三区四区| 国产一区免费电影| 美日韩免费视频| 伦xxxx在线| 精品欧美一区二区三区| 色播五月激情五月| 麻豆成人入口| 久久精品中文字幕| 中文字幕激情小说| 国产一区二区免费在线| 老牛影视免费一区二区| caoporn97在线视频| 欧美视频13p| 日韩精品在线播放视频| 中文精品一区二区| 九九视频这里只有精品| 中文字幕免费高清网站| 国产69精品久久777的优势| 日韩一区不卡| а√天堂8资源在线| 欧美精品免费视频| 色婷婷av777| 欧美视频网站| 成人性生交xxxxx网站| 欧洲免费在线视频| 亚洲超丰满肉感bbw| 色综合五月婷婷| 精品大片一区二区| 欧美国产精品人人做人人爱| 亚洲综合免费视频| 国产日产亚洲精品系列| av动漫在线看| 波多野结衣在线一区二区 | 日韩 欧美 亚洲| 老汉av免费一区二区三区| 蜜桃狠狠色伊人亚洲综合网站| 亚洲卡一卡二| 538prom精品视频线放| 日本美女xxx| 久久久久中文| 欧美日韩精品久久久免费观看| 九色91在线| 日韩女优电影在线观看| 精品国产国产综合精品| 免播放器亚洲一区| 色999日韩自偷自拍美女| 亚洲最大网站| 亚洲欧美激情另类校园| 国产又爽又黄的视频| 成人午夜碰碰视频| 欧美精品久久久久久久久久久| 久久伦理中文字幕| 欧美成人精品三级在线观看| 国产精品永久久久久久久久久| 国产精品美女久久久久aⅴ国产馆| 国产一级不卡毛片| 国产亚洲一卡2卡3卡4卡新区 | 三级在线观看| 色av综合在线| 快灬快灬一下爽蜜桃在线观看| 日本 国产 欧美色综合| 亚洲不卡中文字幕| 性高爱久久久久久久久| 一本色道久久88综合亚洲精品ⅰ| 天干夜夜爽爽日日日日| 国产日韩三级在线| 天天干天天玩天天操| 天天综合久久| 成人三级在线| 欧美freesex黑人又粗又大| 亚洲精品自在久久| 久久午夜鲁丝片| 综合欧美一区二区三区| avtt中文字幕| 先锋亚洲精品| 日韩福利二区| www.久久爱.com| 久久久爽爽爽美女图片| 深夜福利视频在线观看| 91高清视频免费看| 亚洲欧美精品aaaaaa片| 成人免费观看av| 激情五月开心婷婷| 99久久婷婷国产综合精品电影√| 99re国产| 依依综合在线| 久久久精品免费| 天堂av在线免费| 欧美三级在线视频| 久久久精品99| 国产欧美精品一区二区三区四区| 久久精品视频在线观看免费| 亚洲乱亚洲高清| 亚洲欧美日韩精品久久久| 久久中文字幕一区二区| 欧美一区二区三区精品电影| 亚洲视频tv| 亚洲大胆人体在线| 又骚又黄的视频| 亚洲v日本v欧美v久久精品| 在线小视频你懂的| 国产99久久久久| 青青青在线视频免费观看| 欧美日韩91| 相泽南亚洲一区二区在线播放 | 青娱乐一区二区| 秋霞午夜一区二区三区视频| 日本精品视频在线观看| 欧美xxx黑人xxx水蜜桃| 最近日韩中文字幕中文| 日本免费网站在线观看| 欧美丰满少妇xxxbbb| 午夜婷婷在线观看| 亚洲一区在线观看免费观看电影高清| 中文字幕国产专区| 成人美女视频在线观看| 亚洲美女性囗交| 日韩影院精彩在线| 国产高清av在线播放| 91欧美在线| 色吧亚洲视频| 日韩中出av| 国产精品免费区二区三区观看| 日日狠狠久久| 国产精品高潮呻吟久久av野狼 | 国产精品色悠悠| 悠悠资源网亚洲青| 久久久亚洲成人| a视频在线观看免费| 中文字幕在线看视频国产欧美| 日韩porn| 亚洲精品电影久久久| 亚洲爱情岛论坛永久| 56国语精品自产拍在线观看| 中文字幕精品在线观看| 日本精品一区二区三区高清| 日本五十路女优| 亚洲一区二区三区国产| 欧美日韩免费做爰视频| 亚洲色欲色欲www在线观看| 国产农村妇女精品一区| 久久精品在这里| 粉嫩av蜜桃av蜜臀av| 91美女福利视频| 久久久久亚洲无码| 不卡电影一区二区三区| 一级黄色电影片| 粉嫩久久99精品久久久久久夜| 日韩视频在线观看一区二区三区| 蜜臀av一区二区在线免费观看 | 久久久一区二区三区捆绑**| 捆绑裸体绳奴bdsm亚洲| va亚洲va日韩不卡在线观看| 国产51自产区| 99riav一区二区三区| 又黄又爽的网站| 99久久国产综合精品色伊| 男男做爰猛烈叫床爽爽小说| 不卡在线视频中文字幕| 日b视频在线观看| 91片黄在线观看| 91视频在线网站| 国产精品三级久久久久三级| 日韩av网站在线播放| 亚洲四区在线观看| 欧美日韩一级大片| 亚洲一区在线观看免费观看电影高清| 国产一级生活片| 午夜精品一区在线观看| 青青青国产在线| 欧美系列在线观看| 国产免费高清视频| 亚洲第一精品久久忘忧草社区| 亚洲av片一区二区三区| 亚洲人在线观看| 免费观看在线午夜影视| 欧美日韩成人黄色| 天天av天天操| 精品视频一区二区三区| 亚洲综合视频1区| 国产精品黄网站| 日韩中文一区| 欧美理论在线| 日本成人在线免费视频| 国内精品伊人久久久久影院对白| gogo亚洲国模私拍人体| 久久综合久久久久88| 手机av在线不卡| 亚洲国产另类av| 亚洲精品无码久久久久| 日韩亚洲国产中文字幕欧美| 四虎免费在线观看| 精品国产欧美一区二区五十路| missav|免费高清av在线看| 国产成人激情视频| 亚洲精品影片| 日韩视频专区| 亚洲天堂成人| 中文字幕在线综合| av网站一区二区三区| 国产三级短视频| 亚洲国产综合色| 亚洲精品一区二区二区| 精品国产乱码久久久久久夜甘婷婷 | 色欲狠狠躁天天躁无码中文字幕| 亚洲精品国产高清久久伦理二区 | 欧美高清精品3d| 天天干天天草天天射| 日韩中文字幕精品视频| 男人久久天堂| 97久久夜色精品国产九色| 成人国产精品一级毛片视频| 无码人妻少妇伦在线电影| 久草热8精品视频在线观看| 国产精品无码久久久久一区二区| 亚洲女性喷水在线观看一区| 国产成人a v| 亚洲九九九在线观看| 日韩精品亚洲人成在线观看| 国产精品久久久久久久久影视| 林ゆな中文字幕一区二区| 小说区视频区图片区| 丝袜a∨在线一区二区三区不卡 | 第四色中文综合网| 26uuu成人| 久久国产精品色| 国产又黄又粗视频| 日韩欧美在线视频观看| 天天综合网在线| 欧美日韩第一视频| 一本久道久久综合狠狠爱亚洲精品 | 777亚洲妇女| 在线观看黄色av| 日韩av成人在线观看| 高清精品视频| 日韩精品一区二区免费| 国产一区二区导航在线播放| 国产成人免费观看网站| 色老汉av一区二区三区| 日本护士...精品国| 欧美亚洲国产成人精品| 欧美大胆a级| 国产精品999视频| 丁香天五香天堂综合| 91视频免费在线看| 日韩欧美资源站| 在线不卡日本v二区707| 91视频最新| 好看的av在线不卡观看| 丰满人妻一区二区三区大胸| 亚洲精品菠萝久久久久久久| 国产精品亚洲lv粉色| 久久九九免费视频| 国产一区一区| 99久久免费观看| 成人精品小蝌蚪| 成人免费看片98欧美| 国产视频综合在线| 亚洲a∨精品一区二区三区导航| 日本不卡免费新一二三区| 久久人人97超碰国产公开结果| 最近中文字幕免费| 欧美综合色免费| 快射av在线播放一区| 97超级在线观看免费高清完整版电视剧| 亚洲欧美在线专区| 国产sm在线观看| 91蜜臀精品国产自偷在线| 98视频在线噜噜噜国产| 欧美久久亚洲| 欧美精品久久久久久久久久久| 成人午夜免费电影| 免费观看一区二区三区毛片| 国产亚洲欧洲黄色| 亚洲欧洲一二区| 国产一区二区三区小说| 26uuu色噜噜精品一区| 中文永久免费观看| 久久999免费视频| 色爱av综合网| 亚洲精品自拍网| 亚洲一区免费视频| 韩国中文字幕2020精品| 成人有码视频在线播放| 亚洲婷婷在线| 调教驯服丰满美艳麻麻在线视频| 欧美一区二区三区视频免费| 538在线视频| 亚洲精品在线观看免费| 国产精品一区2区| 中文字幕一区二区人妻视频| 精品国产一区av| 色婷婷久久久| www.久久av.com| 精品国产91久久久久久老师| 日日夜夜精品一区| 国产成人女人毛片视频在线| 久色成人在线| 久久久久久av无码免费网站| 亚洲香蕉成人av网站在线观看| 亚洲黑人在线| 国产a视频免费观看| 亚洲日本韩国一区| 美州a亚洲一视本频v色道| 91久久精品www人人做人人爽| 久久xxxx精品视频|