2013-02-03 54 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')