【问题标题】:Does RSpec seeds run the same on different machines?RSpec 种子在不同的机器上运行相同吗?
【发布时间】:2017-04-25 15:59:46
【问题描述】:

我正在尝试使用 Travis 设置 CI。但是我在 Travis 上遇到了测试失败,但在本地却没有,即使提供了相同的种子。

我认为种子的运行方式相同,但现在我不确定,想弄清楚它是否运行,所以我现在去哪里看。

【问题讨论】:

  • 您能否提供有关错误的更多信息?此外,请检查您的本地数据库中是否有一些行用于测试,而这些行不在您的种子中。
  • @AndréGuimarãesSakata 测试失败是随机的。猜猜这取决于种子。但我不是在寻求帮助解决我的问题,我只是关心种子在 rspec 中的工作方式:)
  • @AdrienGiboire 您是在谈论在运行测试时设置种子并询问不同机器上的顺序是否相同(具有相同的种子)? relishapp.com/rspec/rspec-core/docs/command-line/order
  • @fabersky 明确一点,我的 CI 日志中提到了一个种子。我在本地运行设置相同种子的规范。即使不是相同的机器/环境,规格的顺序是否完全相同?
  • @fabersky,我有同样的问题:不同机器上相同种子的规格顺序是否完全相同?

标签: rspec


【解决方案1】:

看看this RSpec 功能页面:

在 Ruby 中,随机性是通过调用 srand 并传递给它的种子来播种的 你想用。通过这样做,随后对randshufflesample 等都将以相同的方式随机化,因为相同的种子是 传递给srand

所以简而言之,是的,它会在其他机器上以相同的顺序运行。

Ruby 的srand 确实保证在使用相同Ruby 版本的机器上相同的数字。请参阅此 SO 问题和结果答案:Does seed generate same random sequence across different Rubys?

【讨论】:

  • 我认为这并不能解决问题,真的。它可能只是指它在同一台机器上“以相同的方式随机化”。
  • 幸运的是,这并不是因为我已经在从事 CI 流程的大型团队中测试并使用了几年。我很确定这就是他们的意思。
猜你喜欢
  • 1970-01-01
  • 2018-07-21
  • 2015-11-17
  • 2021-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多