gpt4 book ai didi

selenium - TestNG & Selenium : Separate tests into "groups", 在每个组内按顺序运行

转载 作者:行者123 更新时间:2023-12-04 15:03:08 26 4
gpt4 key购买 nike

我们使用 TestNG 和 Selenium WebDriver 来测试我们的 Web 应用程序。

现在我们的问题是我们经常有几个测试需要按特定顺序运行,例如:

  • 登录应用程序
  • 输入一些数据
  • 编辑数据
  • 检查它是否正确显示

  • 现在显然这些测试需要按照精确的顺序运行。

    同时,我们还有许多其他测试完全独立于上述测试列表。

    所以我们希望能够以某种方式将测试放入“组”(不一定是 TestNG 意义上的组),然后运行它们:
  • 一个“组”内的测试总是以相同的顺序一起运行
  • 但不同的测试“组”作为一个整体可以以任何顺序运行

  • 第二点很重要,因为我们要避免不同组中的测试之间的依赖关系(因此可以独立使用和开发不同的测试“组”)。

    有没有办法使用TestNG来实现这一目标?

    我们尝试过的解决方案
  • 一开始我们只是把属于同一类的测试放在一个类中,使用dependsOnMethods使它们以正确的顺序运行。这曾经在 TestNG V5 中工作,但在 V6 中 TestNG 有时会交错来自不同类的测试(同时尊重由 dependsOnMethods 强加的顺序)。似乎没有办法告诉 TestNG“始终从一个类(class)一起运行测试”。
  • 我们考虑过写一个 method interceptor .但是,这样做的缺点是从 IDE 内部运行测试变得更加困难(因为直接调用类上的测试不会使用拦截器)。此外,使用 dependsOnMethods 进行测试不能被拦截器命令,所以我们必须停止使用它。我们可能必须创建自己的注释来指定排序,并且我们希望尽可能使用标准的 TestNG 功能。
  • TestNG docs建议使用 preserve-order订购测试。这看起来很有希望,但只有在单独列出每个测试方法时才有效,这似乎是多余的且难以维护。

  • 有没有更好的方法来实现这一目标?

    我也愿意接受关于如何处理相互构建的测试的任何其他建议,而不必对所有测试强加总顺序。

    PS

    alanning 的回答指出,我们可以通过在每个测试中进行必要的设置来简单地保持所有测试独立。原则上这是一个好主意(有些测试就是这样做的),但是有时我们需要测试一个完整的工作流程,每个步骤都取决于之前的所有步骤(如我的示例)。用“独立”测试来做到这一点意味着一遍又一遍地运行相同的多步骤设置,这会使我们已经很慢的测试变得更慢。而不是三个测试:
  • 测试 1:登录应用程序
  • 测试 2:输入一些数据
  • 测试3:编辑数据

  • 我们会得到
  • 测试 1:登录应用程序
  • 测试 2:登录应用程序,输入一些数据
  • 测试 3:登录应用程序,输入一些数据,编辑数据

  • 除了不必要地增加测试时间之外,这也让人感觉不自然——应该可以将工作流建模为一系列测试。

    如果没有其他方法,这可能就是我们的方法,但我们正在寻找更好的解决方案,而无需重复相同的设置调用。

    最佳答案

    您正在混合“功能”和“测试”。将它们分开将解决您的问题。

    例如,创建一个执行登录步骤的辅助类/方法,然后在您的登录测试和所有其他需要用户登录的测试中调用该类/方法。

    您的其他测试实际上不需要依赖您的登录“测试”,只需登录类/方法。

    如果稍后的后端修改在登录过程中引入了错误,则所有依赖于登录帮助程序类/方法的测试仍将按预期失败。

    更新:

    原来这已经有了一个名字,即页面对象模式。这是一个包含使用此模式的 Java 示例的页面:

    http://code.google.com/p/selenium/wiki/PageObjects

    关于selenium - TestNG & Selenium : Separate tests into "groups", 在每个组内按顺序运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7956521/

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