【发布时间】:2012-03-01 23:03:24
【问题描述】:
我有一个项目,我们使用 rspec 和 capybara 创建了一组硒测试,这些测试针对远程服务器运行。这意味着这些测试不会在与应用程序相同的 Rails 实例/环境中运行,因此无法访问该应用程序 rake 任务。
我们试图找出一种在每次运行前清理/恢复数据库的好方法。我们通过 Jenkins 构建任务部署应用程序,如果成功,则启动 selenium 测试。我们使用 Selenium2,测试通过 SeleniumServer(以前的 Selenium Grid)运行。当我们部署应用程序以恢复数据库时,我们确实有能力触发 Cap 任务。
问题是如何进行还原,同时最大限度地减少我们需要执行的迁移次数(最好将迁移限制为仅最近的迁移)并使用所需数据预先植入数据库。
关于我们的设置需要注意的一些有趣的事情:我们有相当多的信息要播种,而不是 Gigs,但比您想要输入种子文件的信息要多,我们有一个完全分区的数据库,其中包含两个公共和私有模式。我们有一个多租户应用程序并使用私有模式来隔离数据访问。
那么,其他人用来解决这个问题的方法有哪些?
我认为大多数人使用 database-cleaner 来解决这个问题,但正如我一开始所说,selenium 测试在 Rails 环境之外运行,因此 database-cleaner 无法工作。
【问题讨论】:
-
如果这是一个测试服务器,那么你可以从 cucumber 环境打开一个到数据库的远程连接并做任何你喜欢的事情,例如使用 database-cleaner 清理 db 或者只执行计划 sql 查询。
标签: ruby-on-rails automated-tests selenium-webdriver selenium-grid