我有一个抽象的用户模型。
测试包括继承此抽象模型并将AUTH_USER_MODEL设置为子类模型。
AUTH_USER_MODEL的问题是它必须是“app-name.model-name”形式,因此必须
引用models.py
文件中的模型。但如果它在models.py
文件中,它将被同步到生产数据库,这不是完全有害的,但如果不是这样的话会很好。
我见过Django: How to create a model dynamically just for testing,但答案似乎是hackish(并且不可靠?)
目前我所做的是:
:
# this model only gets created during a test
if 'test' in sys.argv:
class AccountTest(AbstractAccount):
pass
@override_settings(
AUTH_USER_MODEL = '[apps].AccountTest',
)
class AccountManagerTest(TransactionTestCase):
有没有人有更好的方法?这感觉相当hackish。 此外,这种方法有什么问题吗?
答案 0 :(得分:1)
一种好的方法是为您的测试环境使用单独的设置文件。您可以拥有仅在这些测试设置的INSTALLED_APPS
中列出的应用程序,并在那里实现您的测试模型。如果您想使用nose来运行测试等,这种方法也很好......那么你应该像这样运行你的测试:
python manage.py test --settings=my_project.test_settings