【问题标题】:Create model just for testing创建模型仅用于测试
【发布时间】:2013-10-24 15:04:43
【问题描述】:

我有一个抽象的用户模型。

测试包括将此抽象模型子类化并将 AUTH_USER_MODEL 设置为子类化模型。

AUTH_USER_MODEL 的问题是它必须是“app-name.model-name”的形式,因此它必须 参考models.py 文件中的模型。但是,如果它在 models.py 文件中,它将被同步到生产数据库,这并不完全有害,但如果不是这样就好了。

我见过Django: How to create a model dynamically just for testing,但答案似乎很老套(而且不可靠?)

目前我做的是:

在 [apps]/models.py 中:

# this model only gets created during a test
if 'test' in sys.argv:
    class AccountTest(AbstractAccount):
        pass 

在 [apps]/tests/init.py:

@override_settings(
    AUTH_USER_MODEL = '[apps].AccountTest',
)
class AccountManagerTest(TransactionTestCase):

有人有更好的方法吗?这感觉相当hackish。 另外,这种方法有什么问题吗?

【问题讨论】:

    标签: django django-models django-testing


    【解决方案1】:

    一个好的方法是为您的测试环境使用单独的设置文件。您可以拥有仅在这些测试设置的INSTALLED_APPS 中列出的应用程序,并在那里实现您的测试模型。这种方法也很好,例如,如果你想使用鼻子来运行你的测试等等......然后你应该像这样运行你的测试:

    python manage.py test --settings=my_project.test_settings
    

    【讨论】:

      猜你喜欢
      • 2010-10-04
      • 2012-07-28
      • 2012-12-31
      • 1970-01-01
      • 2016-05-23
      • 1970-01-01
      • 1970-01-01
      • 2022-01-11
      • 1970-01-01
      相关资源
      最近更新 更多