关于如何在运行selenium测试之前清理远程数据库的想法

时间:2012-03-01 23:03:25

标签: ruby-on-rails automated-tests selenium-webdriver selenium-grid

我有一个项目,我们使用rspec和capybara创建了一组针对远程服务器运行的selenium测试。这意味着这些测试不会在与应用程序相同的Rails实例/环境中运行,因此无法访问该应用程序的rake任务。

我们想要弄清楚的是在每次运行之前清理/恢复数据库的好方法。我们通过Jenkins构建任务部署应用程序,然后,如果成功,则启动selenium测试。我们使用Selenium2,测试通过SeleniumServer(以前的Selenium Grid)运行。在部署应用程序以恢复数据库时,我们确实能够触发Cap任务。

问题是如何在最小化我们需要执行的迁移数量的同时执行还原(最好将迁移限制为仅迁移到最新的迁移),并使用所需数据预先设置数据库。

关于我们的设置需要注意的一些有趣的事情:我们有一些信息可以播种,而不是Gigs,但是比你想要输入种子文件更多,我们有一个完全分区的数据库和私人模式。我们有一个多租户应用程序,并使用私有模式来隔离数据访问。

那么,其他人用来解决这个问题的方法是什么?

我认为大多数人都使用数据库清理程序来解决这个问题,但正如我在开始时所说的那样,selenium测试在Rails环境之外运行,因此数据库清理程序无法工作。

1 个答案:

答案 0 :(得分:0)

如果您正在使用Jenkins,则可以构建另一个Jenkins作业,该作业全权负责重置/刷新您的数据库。这可能包含您选择的用于清理数据库的脚本。然后将当前的Jenkins测试作业设置为下游项目,该项目在成功执行清理作业后启动。

然后当你想开始一个完整的测试时,只需运行清理工作然后去制作三明治:)