【发布时间】:2012-12-26 16:30:40
【问题描述】:
我想在生产环境中的 Cron 作业中运行单元测试。由于我可以使用的机器数量的限制,我只能在 1 台生产机器上运行这些单元测试。我没有开发机器/环境。让我们想象一下是这种情况(即使它不是一个现实的和糟糕的设置),我根本无法改变它:)
是否可以在生产环境中运行 "rake test" 甚至 "rake test RAILS_ENV=test"?如果我这样做,它是否总是在测试数据库上运行测试,而不是在生产数据库上运行?确实如此,环境会不会只在测试范围内“测试”?
显然,我可以对此进行测试,但因为我不想冒生产数据的风险,所以在执行此操作之前我宁愿有一个确定的答案。
【问题讨论】:
-
你为什么要在 cron 作业上运行测试?当您的代码更改或即将更改的代码部署到生产环境时,您会运行测试。您的代码是否通过 cron 作业更改和部署?
-
@AlexWayne 我需要测试几个从网站抓取数据以及调用 APIS 的函数。如果该网站或 API 的架构发生变化,我需要知道。因此需要自动化测试。无论它们应该是单位,还是回归或其他无关紧要的东西,但需求就在那里。
-
@Hisoka 我明白了。这是一个奇怪的用例,我认为它甚至不应该触及您的数据库,并且完全独立于您的应用程序主测试套件。通常人们会竭尽全力防止接触到测试套件中的远程服务器。为这部分需求制作一个独立的测试套件,并通过 cronjob 运行 that。由于您无法控制的事情而失败的测试套件似乎是一件很难维护的事情。
-
@AlexWayne 是的,这是可行的。所以假设我想使用 rake test 来测试这些。我可以在产品中这样做吗?
标签: ruby-on-rails ruby rake