React Test Utils与Selenium WebDriver

时间:2019-03-18 07:52:50

标签: selenium-webdriver automated-tests reactjs-testutils

我们已经将React JS用于前端,我们需要编写端到端测试。在线研究之后,我们遇到了两个选择:

1. Selenium WebDriver
2. React Test Utils (https://reactjs.org/docs/test-utils.html)

我了解到,使用React Test Utils,您可以使用诸如findRenderedDOMComponentWithXXX之类的方法来模拟点击并检查HTML元素的状态,并且可以从命令行运行这些测试,从而使它们更快。

Selenium做同样的事情,但是从浏览器内部,它将允许您以行为驱动开发风格编写测试(使其更具可读性)

我的困惑:

  1. 我们可以使用React Test Utils测试完整的网页(复杂组件)还是最好只测试简单的定制组件。 例如:如果我们有一个像Tasks这样的组件,它使您能够  添加任务,删除任务,更改优先级,这些优先级使用Input,DropDown和Toggle之类的组件。

    因此,对整个Tasks组件使用React Test Utils是个好主意,还是对输入,DropDown,Toggle等较小的单个组件使用它,

  2. 要测试完整的Tasks组件,请使用Selenium进行端到端测试。

其他一些要点:

    React Test Utils中的
  1. simulate方法需要传递事件数据,这可能会增加少量工作。

如果有人可以帮助我理解两者之间的区别,那就太好了。

1 个答案:

答案 0 :(得分:1)

您可以同时使用Jest和Selenium。不要只局限于一个。当您基于特定的测试需求进行测试驱动开发甚至行为驱动开发时,您甚至可能超越这两个领域。我认为开玩笑本身不能真正模拟UAT。您需要打开浏览器以完全模拟用户体验,但是相对于所有测试,这些浏览器测试可能只是很小比例的测试。如此之多的人离开硒的原因是其配置和维护的庞大性。还有速度和可靠性。

近年来,基于浏览器的测试中出现了更新的工具:

木偶

https://github.com/GoogleChrome/puppeteer

Nightwatch.js

http://nightwatchjs.org

此外,您的特定编程语言还提供了其他功能和增强的测试功能。许多Java开发人员在测试中使用Maven和TestNG来构建和调试测试。 Ruby开发人员可能会使用RSpec。无论您使用哪种测试运行程序,它都可能在后端包含多种依赖项,这些依赖项包括各种测试工具,包括linting,html校对,功能,DevSecOps,数据库迁移甚至拼写检查。关键是将您认为需要的所有测试归为一个测试运行程序(最好或尽可能少)。然后将它们全部运行,并在CI / CD管道中背靠背运行;就像詹金斯(Jenkins)在部署变更之前。如果任何一个失败,那么您的构建将实时失败。

如果您想在管道中运行多个API测试,Newman看起来相当不错,可以将您可能已经在CI / CD管道中放置的Postman测试并入。当然,您也可以构建http客户端,但不是每个人都有一套编码技能,因此,您首先选择的工具也应该补充您现有的技能。

现在,Smart Bear还拥有一些工具,这些工具将在CI / CD管道中运行以进行SOAP和UI测试,但是这些工具比开放源代码替代工具昂贵得多。

相关问题