views:

50

answers:

3

I've created test.py module, filled with

from django.test import TestCase
from django.test.client import Client
from django.contrib.auth.models import User
from django.contrib.sites.models import Site

from forum.models import *

class SimpleTest(TestCase):


    def setUp(self):
        u = User.objects.create_user("ak", "[email protected]", "pwd")
        Forum.objects.create(title="forum")
        Site.objects.create(domain="test.org", name="test.org")

    def content_test(self, url, values):
        """Get content of url and test that each of items in `values` list is present."""
        r = self.c.get(url)
        self.assertEquals(r.status_code, 200)
        for v in values:
            self.assertTrue(v in r.content)

    def test(self):
        self.c = Client()
        self.c.login(username="ak", password="pwd")

        self.content_test("/forum/", ['<a href="/forum/forum/1/">forum</a>'])
        ....

and placed it in folder with my application. When i run tests by

python manage.py test forum

after creating the test database i get an answer "Ran 0 tests in 0.000s"

What am i doing wrong ?

P.S. Here is my project hierarchy:

MyProj:
    forum (it's my app):
        manage.py
        models.py
        views.py
        tests.py
        ...

I renamed test.py to tests.py. Eclipse got that this module is with tests, but answer is still "Ran 0 tests in 0.000s"

+3  A: 

You have to name it tests.py .

simplyharsh
I renamed test.py to tests.py. Eclipse got that this module is with tests, but answer is still "Ran 0 tests in 0.000s"
+1  A: 

There is something not quite right if you are getting the same result after renaming the file to tests.py. How are you running the tests? Are you doing so from the command line or have you set up a custom run target using Eclipse? Please try it from the command line if you haven't already.

Also fire up Django shell (python manage.py shell) and import your tests module.

from MyProj.forum.tests import SimpleTest

Does the import work correctly?

Manoj Govindan
I ran my tests from command line.
I tryed "python manage.py shell" and "from MyProj.forum.tests import Test_forum" (i renamed test class), and it didn't work. But "import MyProj.forum.tests" and "from MyProj.forum.tests import *" passed without errors.
Looks like something is amiss. Try this: `from MyProj.forum import tests` followed by `dir(tests)`. See if your class name is present in the output of the `dir` command.
Manoj Govindan
As it was expected: <code> >>> dir(tests)['__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__'] </code> So, there is no my test class in tests.py.What did i missed ?
This is interesting: there is no `Test_forum` in that list. It seems to me that you have a directory named `tests` in there. This would explain why `from MyProj.forum.tests import Test_forum` fails but `import MyProj.forum.tests` succeeds. Can you check if this is the case?
Manoj Govindan
Yes, you were right. I tryed to test my app with nose and urllib/urllib2 first, and for this purpose i've created package tests. I removed this package and django test tool got my test class in tests.py. Thank you, Manoj Govindan. You saved me !
A: 

Try renaming your method test to something like test_content.

I believe the test runner will run all methods named test_* (see the python docs for organising test code. Django's TestCase is a subclass or unittest.TestCase, so the same rules should apply.

Alasdair
I have renamed my test class to Test_forum. But it didn't help
Don't rename the class, rename the method. It might be case sensitive so try test_forum.
Alasdair
I renamed method to test_forum. It didn't help :(((