145👍
From version 1.6 of Django, the test discovery mechanism changed. You no longer need to import everything from tests/__init__.py
, but now you have to make sure that all your files containing tests match the pattern test*.py
.
So, instead of having app/tests/models.py
and app/tests/views.py
, now you should have app/tests/test_models.py
and app/tests/test_views.py
.
You could also create a file named app/tests/test.py
and include your other files from there. The thing is that the runner will look for files matching the pattern test*.py
and execute them.
17👍
Note: This describes behavior prior to Django 1.6. See Artur Soler’s answer for Django 1.6 and later.
Make a package: myapp/tests/
Within the package, put as many different testing modules as you want. In the __init__.py
within tests
, import the tests from those modules. (Or some variation on this theme.)
edit: Wow, didn’t notice you already mentioned a tests
package.
The important thing is to get everything available from the package. Django will get the tests from the package, so they have to be visible in __init__.py
.
[edit: Added note about Django version 1.6]
- [Django]-How do you configure Django for simple development and deployment?
- [Django]-What's the point of Django's collectstatic?
- [Django]-How do you detect a new instance of the model in Django's model.save()
3👍
Just to add to Artur Soler‘s great answer…
You can also use the --pattern
option to specify how your test files are named.
For example if your test files are named foo_test.py
, bar_test.py
and similar, you can use:
$ ./manage.py test --pattern="*_test.py"
- [Django]-How to create a Django queryset filter comparing two date fields in the same model
- [Django]-Django admin: How to display the field marked as "editable=False" in the model?
- [Django]-Dynamic choices field in Django Models
2👍
In your __init__.py put something like:
from foo_test import *
from bar_test import *
- [Django]-'staticfiles' is not a valid tag library: Template library staticfiles not found
- [Django]-What is the purpose of adding to INSTALLED_APPS in Django?
- [Django]-Django rest framework change primary key to use a unqiue field
0👍
As @artur-soler explained,
Let’s say you have an app named "AppName":
Your __init__.py
inside the tests folder should consists of something like –
from AppName.tests import *
- [Django]-Django Model Field Default to Null
- [Django]-Django-debug-toolbar not showing up
- [Django]-Django apps aren't loaded yet when using asgi