3

我正在制作一个 Django 应用程序库,旨在为我正在开发的游戏应用程序中的其他应用程序模型提供通用排行榜。我的库的客户应该扩展我正在创建的抽象基类并覆盖方法以提供代码以实际聚合对象。

我想保持这个图表应用程序自包含和松散耦合,以便我可以轻松地将它分离并开源它,所以我正在尝试编写不依赖于外部应用程序中任何模型的单元测试,甚至尽管该应用程序的全部目的本质上是从外部应用程序中的模型中聚合数据。我可以在应用程序自己的 dummy 模型中创建一个虚拟模型models.py,但这会导致为每个使用该库的项目创建一个未使用的表,这似乎并不理想。有没有理想的方法来做到这一点?

4

1 回答 1

4

到目前为止,我可以看到两个选项。

选项 1:创建非托管模型类,并在测试中手动创建和销毁数据库表。

选项 2(我选择的):在我的tests模块中声明测试模型。按照此处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')
于 2013-02-05T21:16:34.790 回答