Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PyCharm 1.1 - using specific settings for django test runner

Does anyone have any experience with using different settings files for the Django test runner in PyCharm?

My project is composed as follows:

+penguinproject
+apps
+settings
--__init__.py
--common.py # this one is imported by the others below
--development.py
--production.py
--staging.py
+static
...

Running the tests with a manage.py command (and adding --settings=settings.development) works fine, but I'd like to use the built in test runner (as it's better integrated with the IDE).

I think the problem is that my settings aren't being loaded correctly, as I get this error:

E:\Development\django_projects\penguinproject\Scripts\python.exe "C:\Program Files (x86)\JetBrains\PyCharm 1.1\helpers\pydev\pydevd.py" --client 127.0.0.1 --port 49898 --file "C:\Program Files (x86)\JetBrains\PyCharm 1.1\helpers\pycharm\django_manage.py" test items
Testing started at 20:36 ...
pydev debugger: warning: psyco not available for speedups (the debugger will still work correctly, but a bit slower)
pydev debugger: starting
E:\Development\django_projects\penguinproject\lib\site-packages\path.py:32: DeprecationWarning: the md5 module is deprecated; use hashlib instead
import sys, warnings, os, fnmatch, glob, shutil, codecs, md5
settings file:  development
pycharm django settings imported
Manager file:  manage
Traceback (most recent call last):
File "C:\Program Files (x86)\JetBrains\PyCharm 1.1\helpers\pydev\pydevd.py", line 1165, in <module>
debugger.run(setup['file'], None, None)
File "C:\Program Files (x86)\JetBrains\PyCharm 1.1\helpers\pydev\pydevd.py", line 929, in run
execfile(file, globals, locals) #execute the script
File "C:\Program Files (x86)\JetBrains\PyCharm 1.1\helpers\pycharm\django_manage.py", line 15, in <module>
run_module(manage_file, None, '__main__')
File "c:\python26\Lib\runpy.py", line 140, in run_module
fname, loader, pkg_name)
File "c:\python26\Lib\runpy.py", line 34, in _run_code
exec code in run_globals
File "E:\Development\django_projects\penguinproject\yabe\manage.py", line 11, in <module>
execute_manager(settings)
File "E:\Development\django_projects\penguinproject\lib\site-packages\django\core\management\__init__.py", line 438, in execute_manager
utility.execute()
File "E:\Development\django_projects\penguinproject\lib\site-packages\django\core\management\__init__.py", line 379, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "E:\Development\django_projects\penguinproject\lib\site-packages\django\core\management\base.py", line 191, in run_from_argv
self.execute(*args, **options.__dict__)
File "E:\Development\django_projects\penguinproject\lib\site-packages\django\core\management\base.py", line 220, in execute
output = self.handle(*args, **options)
File "E:\Development\django_projects\penguinproject\lib\site-packages\django\core\management\commands\test.py", line 37, in handle
failures = test_runner.run_tests(test_labels)
File "E:\Development\django_projects\penguinproject\lib\site-packages\django\test\simple.py", line 396, in run_tests
suite = self.build_suite(test_labels, extra_tests)
File "E:\Development\django_projects\penguinproject\lib\site-packages\django\test\simple.py", line 285, in build_suite
app = get_app(label)
File "E:\Development\django_projects\penguinproject\lib\site-packages\django\db\models\loading.py", line 140, in get_app
raise ImproperlyConfigured("App with label %s could not be found" % app_label)
django.core.exceptions.ImproperlyConfigured: App with label items could not be found

I don't get this error using manage.py from the command line (also when invoked from within the IDE), which makes me think the development.py settings aren't loaded correctly. Debugging shows that within get_app() (in the loading.py module) settings.INSTALLED_APPS is an empty list.

Has anyone succeeded in setting up the test runner with this setup of settings files?

Many thanks in advance!

like image 928
LaundroMat Avatar asked Dec 30 '10 07:12

LaundroMat


1 Answers

i'd suggest a slight modification of your project structure. check out this much, much more detailed example:

http://www.revsys.com/blog/2014/nov/21/recommended-django-project-layout/

you'll see there's a top level directory AND a subdir with the same name where all subsequent settings files go.

for yet another reference, check out the 'startproject' command that can be used to create the initial project structure:

https://docs.djangoproject.com/en/1.10/ref/django-admin/#django-admin-startproject

HTH

like image 164
matias elgart Avatar answered Nov 15 '22 08:11

matias elgart