2011-04-08 86 views
1

在我們的項目中,我們使用存儲在.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'); 
... 

問題是,當我們添加或刪除列,我們必須要經過的所有文件(在我的情況下,有很多大文件)和手動添加列和相應的值:這是大腦中的一大痛苦。

所以我在想,其他商店怎麼存儲他們的測試數據呢?我認爲rails方式,使用.yml文件(鍵值對)是好方法,但是如何在非ruby-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 
+0

我只是喜歡在我的數據庫中創建一個單獨的測試模式。通過這種方式,我不必更改代碼以使其可測試,並且從開發到測試數據庫的任何更改遷移都應該很簡單。 – 2011-04-08 15:45:07

+0

Rails版本如何避免您手動添加新列和數據? – Albireo 2011-04-08 15:45:27

+0

rails版本更好,因爲刪除/添加列與在文件中添加新行一樣簡單...使用插入刪除列將刪除列名並在VALUES子句中找到其相應的值。用20列以上的表格,這是一種令人興奮的想法。 – 2011-04-08 15:49:12

回答

1

如果新列的模式的非空/所需的列,然後我可以看到更新人口數據的SQL腳本的問題。但是,如果新列與特定測試無關,則相應的sql文件應該能夠忽略模式更新。

另一種方法可能是

  • 維持一個測試數據庫預先填充了已知值。每次創建副本並針對副本運行測試。在每次測試運行後丟棄。
  • 每次更新模式時,都需要像rails一樣通過遷移腳本來完成它們......然後可以針對測試數據庫運行這些腳本,並且可以忽略不計。
+0

該解決方案在評論中。熟悉鐵軌方式,我也將其視爲一種解決方案。一種希望另一種解決方案,比較:) – 2011-04-08 15:55:15

相關問題