I'm playing with django 1.6 tutorial but i can't run tests. My project (name mydjango) and app structure (name is polls) are as shown below in a virtualenv. (.nja files are just created by ninja-ide the ide I'm using)
. ├── __init__.py ├── manage.py ├── mydjango │   ├── __init__.py │   ├── __init__.pyc │   ├── mydjango.nja │   ├── settings.py │   ├── settings.pyc │   ├── templates │   │   └── admin │   │       └── base_site.html │   ├── urls.py │   ├── urls.pyc │   ├── wsgi.py │   └── wsgi.pyc ├── polls │   ├── admin.py │   ├── admin.pyc │   ├── __init__.py │   ├── __init__.pyc │   ├── models.py │   ├── models.pyc │   ├── templates │   │   ├── __init__.py │   │   └── polls │   │       ├── detail.html │   │       ├── index.html │   │       ├── __init__.py │   │       └── results.html │   ├── tests.py │   ├── tests.pyc │   ├── urls.py │   ├── urls.pyc │   ├── views.py │   └── views.pyc └── polls.nja   I followed the tutorial to understand how django works but I'm stuck in the test part. As tutorial suggest I created a file named tests.py into the app folder, the pretty straightforward file is:
# -*- coding: utf-8 -*- from django.test import TestCase import datetime from django.utils import timezone from polls.models import Question  # Create your tests here.l   class QuestionMethodTests(TestCase):      def test_was_published_recently_with_future_poll(self):         """         was_published_recently dovrebbe ritornare falso se si mette una data nel futuro         """         future_question = Question(pub_date=timezone.now() + datetime.timedelta(hours=50))         self.assertEqual(future_question.was_published_recently(), False)   then i installed unittest2 into the virtualenv with
$pip install unittest2   and run
$python manage.py test polls Creating test database for alias 'default'... E ====================================================================== ERROR: mydjango.polls.tests (unittest2.loader.ModuleImportFailure) ---------------------------------------------------------------------- ImportError: Failed to import test module: mydjango.polls.tests Traceback (most recent call last):   File "/home/sergio/.virtualenvs/django4/local/lib/python2.7/site-packages/unittest2/loader.py", line 260, in _find_tests     module = self._get_module_from_name(name)   File "/home/sergio/.virtualenvs/django4/local/lib/python2.7/site-packages/unittest2/loader.py", line 238, in _get_module_from_name     __import__(name) ImportError: No module named polls.tests   ---------------------------------------------------------------------- Ran 1 test in 0.001s  FAILED (errors=1) Destroying test database for alias 'default'...   No way to have the test working, also if don't pass the app name it returns the same error:
$ python manage.py test Creating test database for alias 'default'... E ====================================================================== ERROR: mydjango.polls.tests (unittest2.loader.ModuleImportFailure) ---------------------------------------------------------------------- ImportError: Failed to import test module: mydjango.polls.tests Traceback (most recent call last):   File "/home/sergio/.virtualenvs/django4/local/lib/python2.7/site-packages/unittest2/loader.py", line 260, in _find_tests     module = self._get_module_from_name(name)   File "/home/sergio/.virtualenvs/django4/local/lib/python2.7/site-packages/unittest2/loader.py", line 238, in _get_module_from_name     __import__(name) ImportError: No module named polls.tests   ---------------------------------------------------------------------- Ran 1 test in 0.001s  FAILED (errors=1) Destroying test database for alias 'default'...   My INSTALLED_APPS are:
INSTALLED_APPS = (     'south',     'django.contrib.admin',     'django.contrib.auth',     'django.contrib.contenttypes',     'django.contrib.sessions',     'django.contrib.messages',     'django.contrib.staticfiles',     'polls', )   What am I doing wrong?
Open /catalog/tests/test_models.py.TestCase , as shown: from django. test import TestCase # Create your tests here. Often you will add a test class for each model/view/form you want to test, with individual methods for testing specific functionality.
If you're using the PyCharm IDE, you can run unittest or pytest by following these steps: In the Project tool window, select the tests directory. On the context menu, choose the run command for unittest . For example, choose Run 'Unittests in my Tests…'.
The test client is a Python class that acts as a dummy web browser, allowing you to test your views and interact with your Django-powered application programmatically.
I had exactly the same issue with my Django project:
$ python manage test polls.tests   worked fine whereas the following failed with an import error:
$ python manage test polls $ python manage test (...) ImportError: Failed to import test module: mydjango.polls.tests Traceback (most recent call last): (...) ImportError: No module named polls.tests   Check carefully the error message: Django's test runner tries to import the tests from mydjango.polls.tests where mydjango is the name of the root directory (the container for your project).
I fixed this issue by deleting the __init__.py file in mydjango directory (at the same level than manage.py file). This directory is not supposed to be a python module and it seems to mess up with Django's test runner if it is the case.
So just deleting the _init_.py file should fix our problem:
$ rm mydjango/__init__.py 
                        For anyone else having the same problem, another reason for this to happen is if you have the same name for the root folder and the project folder.
For example:
mydjango ├── __init__.py ├── manage.py ├── mydjango │   ├── __init__.py │   ├── settings.py │   ├── urls.py │   ├── wsgi.py ├── polls │   ├── admin.py │   ├── __init__.py │   ├── models.py |   ├── tests.py │   ├── templates   running       ./manage.py test 
throws errors No module named polls.tests
to fix it simply rename the root folder to something else like :
mydjango_project ├── __init__.py ├── manage.py ├── mydjango │   ├── __init__.py │   ├── settings.py │   ├── urls.py │   ├── wsgi.py ├── polls │   ├── admin.py │   ├── __init__.py │   ├── models.py |   ├── tests.py │   ├── templates 
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With