gpt4 book ai didi

javascript - 页面上的条件测试模块(如果存在) - 使用 Cypress

转载 作者:行者123 更新时间:2023-12-02 23:19:27 26 4
gpt4 key购买 nike

这里是 Cypress 的新用户 - 以及新的“测试人员”;所以请温柔点。 :-)

我正在制作一个网站,用户可以在一堆不同的页面上插入 10 个不同模块的混合。

我正在尝试进行一些测试,然后(理想情况下)遍历给定页面上的所有不同模块。然后,对于每个模块,它将针对给定模块运行一组测试。

示例:

为了简单起见,假设有 3 个模块:ABC

用户/客户使用以下布局组合页面:

-----
| B |
| A |
| C |
| B |
| B |
| A |
| A |
| A |
-----

理想情况下,我会编写一个(一组)测试,它会执行以下操作:

it( 'tests all modules on a page', function() {
cy.get( '.page-section' )
.each( ( $el ) => {
switch( $el.pageSection ){
case 'A':
testForA();
break;
case 'B':
testForB();
break;
case 'C':
testForC();
break;
}
}

我可以在此处阅读此页面:Conditional Testing with Cypress , Cypress 的条件测试应该在非常具体的情况下进行。

但这将是一项重大测试。显然它会被分成几个函数。但这是人们对 Cypress 所做的事情吗?或者我把这把锤子当作 Screwdriver 来对待? ...我找不到任何教程/指南来设置类似的内容(针对不同的情况)。

最佳答案

这很大程度上取决于此特定测试的目的。我将探讨两种具有不同优缺点的不同场景。

  1. 此测试是您与业务团队同意的。

这意味着除非按照描述通过(3 种不同类型的页面上有 10 个模块),否则该功能(包含模块的页面)并不完整。在这种情况下,您实际上可以完全执行您已经执行的操作 - 您的测试会查看模块、它们的顺序和整体功能。正如您已经建议的那样,可以拆分测试函数并简化 switch 语句,例如,将测试函数放入映射中,然后仅从该映射中调用函数,其中键是模块名称/id;但这是一个小决定。最重要的是,作为测试设计者,您必须决定整个事情是否有效。

这种方法有缺点,即如果有太多条件检查和 DOM 查询,测试可能会变得脆弱并且无法 100% 地工作(至少,这是我在 cypress 和其他 e2e 方面的经验)测试平台)。另一个缺点是,当测试失败时,没有立即反馈说明为什么会发生这种情况。

  • 这是一项测试,旨在让开发者更快地获得有关功能状态的反馈并跟踪功能回归。
  • 此类测试的重点转移到功能的某些部分。理想情况下,开发人员为所有较小的部分编写测试,如果这些部分有效,则整个页面都可以工作。例如,开发人员编写的不同测试是独立的

    • 验证容器可以托管多个模块
    • 验证这些模块的顺序
    • 验证相同类型的模块是否可以放置在一页上
    • 验证模块的渲染没有此容器
    • 验证两个给定组件之间的交互(如果应该有)

    等等,等等

    这些测试具有更好的稳定性,并且开发人员可以获得更多信息,但代价是开发和维护所有这些测试代码。开发人员可能确信,如果测试 A、B 和 C 有效,那么整个页面肯定也能正常工作。但他们从未实际测试过,所以他们不确定。

    如果您想获得这些好处(并希望解决缺点) - 那么您需要在套件中创建更多独立的测试。

    <小时/>

    这个答案有点长,但就测试策略而言,我注意到没有明确的赢家。因此,主要取决于您来了解应用程序的哪些部分对您来说更重要以及您以后是否有能力维护测试。

    关于javascript - 页面上的条件测试模块(如果存在) - 使用 Cypress ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57010909/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com