2017-01-11 81 views
1

我目前決定什麼測試軟件包與我的Django項目使用,具體如何填充數據之前,我運行測試。我曾調查過:爲什麼我無法爲我的django項目創建自己的測試數據庫?

  1. 賽程:由於修改JSON可能很困難且很難維護,因此很多人似乎反對這一點。

  2. 廠男孩:我的項目有很多層次,以它的,所以我覺得從創建一個模型,是層次結構非常低是很慢的對象。

我在腦海裏想到的想法只是建立一個數據庫,我會一直運行測試。既然我知道它裏面有什麼數據,那它不應該像沒有JSON的麻煩一樣工作嗎?由於我沒有通過我的研究看到這個想法,我認爲這是一個壞主意。但爲什麼它是一個壞主意?

+0

你有什麼試過?也許我誤解了,但django默認使用Sqlite,並且改變爲MySql或Postgres就像改變你的'settings.py'一樣簡單。 –

+0

@GregSchmit:他問的是獲取單元測試數據庫中測試數據的不同方法。 – RemcoGerlich

回答

1

你真的與廠家男孩測試?使用內存中的sqlite數據庫,根據我的經驗,它非常快速,並且使用層次結構非常方便。

您的數據庫想法或多或少與fixtures相同 - 您可以使用數據庫創建JSON夾具,方法是在其上運行dumpdata管理命令,並將測試數據保存在數據庫中而不是JSON文件中。

一些原因在測試數據庫偏愛男孩的工廠:生成的數據正確的,在測試中,所以它是立即明顯發生了什麼以及哪些字段

  • 是相關的測試。

  • 數據自帶的測試代碼,沒有多餘的文件或數據庫轉儲來管理。

  • 廠男孩非常好,層次(「我想這種情況下與所有字段的默認值的情況下,除了這一個領域的六個步驟了層次結構中的」 - instance = InstanceFactory.build(series__study__patient__archive__project__algorithm_type='foo')

  • 有時,對象不必一定要保存到數據庫中,以便對其方法進行測試,在這種情況下,工廠男孩的.build()速度非常快。

  • 而是挑選有趣的邊界情況下,當前測試,你會受到誘惑,只是重新使用已有的東西在數據庫中,沒有發現錯誤。

  • 也許你需要不能在數據庫中,同時由於唯一性約束存在,以測試不同的值。

有可能更多,但我需要睡覺。

相關問題