将生产数据库部分复制到测试环境中

时间:2015-10-08 14:13:33

标签: ruby-on-rails database postgresql selenium testing

问题

我目前正在使用Selenium进行全栈测试。现在我正在使用工厂女孩来填充我的数据库,随着应用程序的增长,它有点整理。有没有办法以最小的努力创建生产数据库的副本?我不想在我的测试套装中使用整个数据库,因为它超过10GB。但相反,每个模型只有少数记录。

我可以手工编写一个脚本来执行此操作,但我希望已经有一个宝石或类似的东西可以为我做这个。

它会如何运作?

我作为测试人员定义了每个模型的最小记录数量。每个模型的关联也被复制。

这是一个例子

class User < ActiveRecord::Base
  has_many :answers
end

class Answer < ActiveRecord::Base
  belongs_to :user
  belongs_to :question
end

class Question < ActiveRecord::Base
  has_many :options
end

class Option < ActiveRecord::Base
  belongs_to :question
end

脚本的外观示例配置

{
  User: 5,
  Option: 1
}

这将复制5个用户及其所有关联,但Option模型除外,我们只包含其中一个。

环境

  • PostgreSQL的
  • Rails 4

备注

请注意,我的应用程序包含400多个关系复杂的模型。手动尝试使用夹具/工厂(对于这些类型的测试)保持测试数据库与生产数据库同步将是一个淡褐色。

另请注意,我正在使用灯具进行单元测试,效果非常好,但在这种情况下,我需要一个预先填充的数据库用于更高级别的测试。

0 个答案:

没有答案