首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我应该使用什么测试方法?

我应该使用什么测试方法?
EN

Stack Overflow用户
提问于 2022-07-13 18:24:53
回答 3查看 63关注 0票数 3

我正在测试一个非常复杂的报价工具,我需要测试折扣保证金价格和折扣价格。假设目录中的价格是100美元,合伙人得到25%的折扣,那么合作伙伴的价格是75美元。

我应该像这样测试-> cy.get(partnerPriceField)/should('have.value', 75)吗?

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-07-13 20:24:28

cy.get(partnerPriceField).should('have.value', 75)是e2e测试的首选。

测试计算的工作由单元测试完成,该测试与源代码非常接近,因此当src计算发生更改时,可以更改测试。

e2e测试的任务是确保给定一些输入数据,页面显示输出数据(黑匣子)。

最好是在夹具表中提供输入和输出,当计算被修改时,该表很容易调整。

票数 2
EN

Stack Overflow用户

发布于 2022-07-13 19:39:44

您可以用.contains()传递一个正则表达式,然后用一个断言来检查这个值是可见的。

代码语言:javascript
复制
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')
票数 1
EN

Stack Overflow用户

发布于 2022-07-13 18:32:19

我建议您使用第二个选项,因为在这种情况下,如果将来catalog pricediscount value发生变化,则不必更改逻辑,因为它是通用的。尽管如此,要使第二个选项工作,您必须首先将catalogPrice和折扣更改为数字,然后在计算之后,您必须将最终答案转换为字符串,然后执行最后的断言,如下所示:

代码语言:javascript
复制
cy.get('partner PriceField').should(
  'have.value',
  (+catalogPrice * (1 - +discount / 100)).toString()
)

以下是您的计算方式:

另外,如果您的catalogPrice以100$的形式出现,而折扣以25%的形式出现,只需添加.replace(/\D/g,'')以删除%和$即可。在本例中,您的断言如下所示:

代码语言:javascript
复制
cy.get('partner PriceField').should(
  'have.value',
  (
    +catalogPrice.replace(/\D/g, '') *
    (1 - +discount.replace(/\D/g, '') / 100)
  ).toString()
)

您的计算将如下所示:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72970975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档