【问题标题】:Parallel Testing Rspec并行测试 Rspec
【发布时间】:2015-03-06 14:36:01
【问题描述】:

我正在尝试并行运行我的 Rspec 测试,但这样做会导致数据冲突,即我有一个 delete_all 方法可以让我在每次测试运行时都清零,这会导致并行运行的测试丢失他们创建的数据。解决这个问题的理想方法是什么?

【问题讨论】:

  • 找到一种不需要delete_all的方法。为什么你认为你需要它?
  • 当使用page.find 时,如果我没有从之前的测试运行中删除该元素,则会导致结果不明确。 @TarynEast
  • 你不应该需要从以前的测试运行中删除东西......测试数据库的设置方式是,除非你已经对设置进行了调整 - 它应该在之后自行删除每次测试运行。
  • 您如何并行运行测试。并行测试应该有自己的数据库,否则,你会得到大量的数据冲突。像 github.com/grosser/parallel_tests 这样的 Gem 正是这样做的,因此请确保您正在这样做或使用其中一种预先构建的 gem。

标签: ruby selenium rspec


【解决方案1】:

独立的数据库。

不确定您是如何并行运行测试的。并行测试应该每个都有自己的数据库,否则,是的,你会得到大量的数据冲突。

如果您的并行测试运行器共享同一个数据库,并且您在其中一个运行器上调用 delete_all,则会导致其他运行器失败,因为他们的测试数据库(都是相同的)现在将是空的。

parallel_tests 这样的 Gem 为每个测试运行程序使用单独的数据库,方法是在测试数据库名称后面加上运行程序编号,例如test_database1test_database2

因此,您应该使用这些预先构建的库之一来帮助解决此问题,但如果您自己滚动,请确保在单独的数据库中运行每个运行器以避免数据库冲突。

【讨论】:

  • 我想知道为什么投反对票?这对我来说显然是个问题,即使 1.5 年后也是如此。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-11
  • 2013-02-02
  • 2015-05-12
  • 1970-01-01
  • 2012-11-28
相关资源
最近更新 更多