我在PyCharm Pro中运行django测试时遇到问题。
- 我可以很好地运行
python manage.py runserver
- 我能胜任
migrate
、makemigrations
、manage.py test
。事实上,manage.py
的一切都按预期运行
每当我在PyCharm中运行测试(通过单击绿色运行按钮(时,我都会收到以下错误:
django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
我已经做了几件事来解决这个问题:
-
我在测试文件中放了这个:
import os os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'
(我保证mysite
是正确的目录( -
我有一个设置文件和一个wsgi文件,我的wsgi文件确实设置了DJANGO_SETTING_MODULE:
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")
application = get_wsgi_application()
-
唯一让我摆脱这个错误的是通过转到
Edit Configuations -> Environment -> Environment Variables
并在那里添加DJANGO_SETTINGS_MODULE
来设置该测试类的配置。这只会给我带来一个不同的错误:django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.
此外,我必须为每个测试类和执行此操作。我不能在类中运行单独的测试,而是必须在该类中运行整个测试套件。不是一个好的解决方案。。。
-
我已经手动(在虚拟环境中(运行了
export DJANGO_SETTINGS_MODULE=mysite.settings
。这并没有改变任何事情。
所以,我没有主意了,已经遵循了我在So上能找到的所有建议。在Pycharm还有其他事情要做吗?同样,cmdline运行良好,但我真的不想以这种方式运行测试——此外,我不能调试。
编辑:可能值得注意的是,我在服务器运行的同时运行单元测试(这应该没有什么区别(,而且我的python解释器也指向了我的virtualenv中的那个。
尝试打开运行/调试配置窗口(您应该在顶部工具栏中找到它,单击播放/调试按钮附近的下拉菜单和编辑配置(从这里,您应该看到一个包含现有保存配置的列表,其中最后一个元素应该是Templates。在Templates下搜索Django测试。在环境部分,将DJANGO_SETTINGS_MODULE=mysite.settings
添加到环境变量中。下次运行运行/调试配置中不存在的测试时,将使用带有设置模块集的模板。
如果我是你,我将删除所有现有的测试配置。此外,我从您的第3点怀疑,您可能配置了python测试,而不是Django测试(这就是为什么您会出现错误django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet
,因为Django没有加载(。如果你有,也删除它。应用配置,然后重试以运行测试。
运行测试时,请确保运行的是Django测试,而不是python测试(您应该在运行部分和工具栏的下拉列表中看到测试名称附近的Django徽标(