【发布时间】: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