【问题标题】:What is the best format to store test data in a file?将测试数据存储在文件中的最佳格式是什么?
【发布时间】:2011-04-08 15:43:07
【问题描述】:

在我们的项目中,我们使用存储在 .sql 文件中的测试数据,有时我们会调用这些文件来使用这些测试数据重新创建数据库。在这个文件中,我们像这样存储数据:

Insert into Table1 ('col1', 'col2') values ('val1', 'val2');
Insert into Table1 ('col1', 'col2') values ('val3', 'val2');
Insert into Table1 ('col1', 'col2') values ('val4', 'val2');
...

问题是当我们添加或删除列时,我们必须遍历所有文件(在我的情况下,有很多大文件)并手动添加列和相应的值:这是一个大大脑疼痛。

所以我在想,其他人如何存储他们的测试数据?我认为使用 .yml 文件(键值对)的 rails 方式是好方法,但是如何在非 ruby​​-rails 环境中使用它?

例如在rails中:

david:
 name: David Heinemeier Hansson
 birthday: 1979-10-15
 profession: Systems development

steve:
 name: Steve Ross Kellock
 birthday: 1974-09-27
 profession: guy with keyboard

【问题讨论】:

  • 我只是喜欢在我的数据库中创建一个单独的测试模式。这样我就不必更改我的代码以使其可测试,并且从开发到测试数据库的任何更改迁移都应该很容易。
  • Rails 版本如何避免您手动添加新列和数据?
  • rails 版本更好,因为删除/添加列就像在文件中添加新行一样简单...使用插入,删除列就是删除列名并在VALUES 子句。有 20 多列的表格,有点令人兴奋。
  • 我喜欢测试数据库的想法,但您仍然需要为迁移编写一些 SQL。

标签: ruby-on-rails unit-testing testing


【解决方案1】:

如果新列是架构中的非空/必需列,那么我可以在更新数据填充 sql 脚本时看到问题。但是,如果新列与特定测试无关,则相应的 sql 文件应该能够忽略模式更新。

另一种方法可能是

  • 维护一个预先填充了已知值的测试数据库。创建一个副本并每次都针对该副本运行测试。每次测试运行后丢弃。
  • 每次更新架构时,都可以像在 rails 中一样通过迁移脚本进行更新。然后这些脚本也可以针对测试数据库运行,而工作量相对较小。

【讨论】:

  • 此解决方案在评论中。熟悉 Rails 方式后,我也将其视为一种解决方案。有点希望有另一种解决方案,比较:)
猜你喜欢
  • 1970-01-01
  • 2010-09-14
  • 1970-01-01
  • 2021-10-22
  • 1970-01-01
  • 1970-01-01
  • 2014-07-21
  • 2013-07-22
  • 2010-11-24
相关资源
最近更新 更多