我在项目的根目录中有一个“设置”目录。它包含具有设置的不同文件:
./settings/tests.py
./settings/testing.py
./settings/production.py
我想使用tests.py进行单元测试(我使用testing.py进行预生产应用程序运行),所以。在 manage.py 文件中,我编写了以下代码:
...
if 'test' in sys.argv:
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'settings.tests')
else:
os.environ.setdefault('DJANGO_SETTINGS_MODULE',
'settings.production')
...
当我运行python manage.py test <app_name>
时,所有测试均正常运行,并且使用了settings / tests.py模块。但是当我运行python manage.py test
时,Django会加载settigns / testing.py文件。
当我重命名testing.py文件时,一切都会按我的预期进行:tests.py模块已加载。
在Django中为测试定位测试模块是否有逻辑?如何禁用它?
答案 0 :(得分:0)
运行测试时,使用--settings
标志提供设置:
python manage.py test --settings=your_app_name.settings.tests
这是做到这一点的方法之一。
答案 1 :(得分:0)
问题在于模块是通过“ test *”模式匹配加载的。