我有一个抽象的用户模型。
测试包括将此抽象模型子类化并将 AUTH_USER_MODEL 设置为子类化模型。
AUTH_USER_MODEL 的问题是它必须是“app-name.model-name”的形式,因此它必须引用models.py
文件中的模型。但是如果它在一个models.py
文件中,它将被同步到生产数据库,这并不是完全有害的,但如果不是这样就好了。
我见过Django: How to create a model dynamic 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。另外,这种方法有什么问题吗?