簡體   English   中英

我應該使用什么測試方法?

[英]What testing approach should I use?

我正在測試一個非常復雜的報價工具,我需要測試折扣保證金價格和折扣價格。 假設目錄中的價格為 100 美元,而合作伙伴獲得 25% 的折扣,則合作伙伴價格為 75 美元

我應該這樣測試 -> cy.get(partnerPriceField)/should('have.value', 75)

或 -> cy.get(partner PriceField)/should('have.value', catalogPrice * (1-discount/100))

cy.get(partnerPriceField).should('have.value', 75)是 e2e 測試的首選。

測試計算的工作屬於單元測試,它們接近源代碼,因此如果/當 src 計算發生變化時,可以更改測試。

e2e 測試的工作是確保給定一些輸入數據,頁面顯示輸出數據(黑框)。

輸入和輸出最好在一個夾具表中提供,當計算被修改時,該表很容易調整。

您可以使用.contains()傳遞一個正則表達式,然后是一個斷言以檢查該值是否可見。

const fullPrice = 100
const discount = .25
const discountPrice = fullPrice * discount
const regexMatcher = new RegExp(`$${discountPrice}`) // equals /\$75/

cy.contains('.selector-containing-price-text', regexMatcher)
  .should('be.visible')

我建議您使用第二個選項,因為在這種情況下,如果將來catalog pricediscount value發生變化,您不必更改邏輯,因為它是通用的。 話雖如此,要使第二個選項起作用,您必須首先將 catalogPrice 和折扣更改為數字,然后在計算之后,您必須將最終答案轉換為字符串,然后執行最終斷言,如下所示:

cy.get('partner PriceField').should(
  'have.value',
  (+catalogPrice * (1 - +discount / 100)).toString()
)

這是您的計算方式:

JS計算

此外,如果您的 catalogPrice 為100$並且折扣為25% ,只需添加.replace(/\D/g,'')以刪除 % 和 $。 那么在這種情況下,您的斷言將如下所示:

cy.get('partner PriceField').should(
  'have.value',
  (
    +catalogPrice.replace(/\D/g, '') *
    (1 - +discount.replace(/\D/g, '') / 100)
  ).toString()
)

您的計算將如下所示:

計算 2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM