jax
jax

Reputation: 840

Django Testing - ImportError: Start directory is not importable

I was trying to do a bit of testing on a pieace of code but I get the ImportError: Start directory is not importable. Below is my code. I would really appreciate if someone could help. I am using Python 2.7.5 and also pycharm.

This is the command I execute in virenv

manage.py test /project/tests.py

from django.test import TestCase

# Create your tests here.
from project.models import Projects
from signup.models import SignUp


class ProjectTestCase(TestCase):

    def SetUp(self):
        super(ProjectTestCase,self).SetUp()
        self.john = SignUp.objects.get(email='[email protected]')
        self.project = Projects.objects.get(pk=1)


    def test_project_permission(self):


        self.assertFalse(self.john.has_perm('delete',self.project))
        self.assertTrue(self.john.has_perm('view',self.project))
        self.assertTrue(self.john.has_perm('change',self.project))

Upvotes: 1

Views: 2358

Answers (1)

Foon
Foon

Reputation: 6478

  1. You should verify that you have an __init__.py in your project directory (it can be an empty file)
  2. You're not calling test correctly. Assuming you have an app known as project, the way to call the tests in that app is manage.py test project

[Edit for additional comment which is really getting into separate question territory]

I would suggest adding this to settings.py (at the bottom)

import sys
if 'test' in sys.argv:
    DATABASES['default'] = {'ENGINE': 'django.db.backends.sqlite3'}
    SOUTH_TESTS_MIGRATE = False

This:

A. Will use sqlite (sort of, I'm not sure if it's actually sqlite or an in-memory db that works like sqlite) ... I've noticed issues if I use postgres and am trying to have my permissions not be excessively liberal AND I've had a test abort)

B. Disables south migrations (so it will just start with a clean database built against whatever models are currently saying)

Upvotes: 3

Related Questions