2013-02-03 51 views
3

我正在將庫作爲Django應用程序,旨在爲我正在開發的遊戲應用程序中的其他應用程序模型提供通用排行榜。我的庫的客戶端應擴展我創建的抽象基類,並覆蓋方法以提供實際聚合對象的代碼。如何爲新的第三方Django庫編寫單元測試

我想保留這個圖表應用程序自包含和鬆散耦合,以便我可以輕鬆地旋轉它並開放源代碼,所以我試圖編寫不依賴任何模型的單元測試外部應用程序,儘管應用程序的全部目的是基本彙總外部應用程序中模型的數據。我可以在應用程序自己的models.py中製作一個虛擬模型,但這會導致爲使用該庫的每個項目創建一個未使用的表,這似乎不理想。有沒有一種理想的方式來做到這一點?

回答

3

到目前爲止,我可以看到兩個選項。

選項1:創建非託管模型類,並在測試中手動創建和銷燬數據庫表。

選項2(我選擇的):在我的tests模塊中聲明測試模型。請按照建議here和觸發syncdb在測試setUp方法來創建表。適合測試,看起來像這樣:

from django.core.management import call_command 
from django.db import models 
from django.test import TestCase 

class TestModel(models.Model): 
    data = models.FloatField() 

    class Meta: 
     app_label = 'myapp' 

class LibraryTests(TestCase): 
    def setUp(self): 
     super(LibraryTests, self).setUp() 
     models.register_models('myapp', TestModel) 
     call_command('syncdb')