Search code examples
djangodjango-testing

Can't make test execute


Folders structure:

.
├── db.sqlite3
├── homepage
│   ├── admin.py
│   ├── apps.py
│   ├── __init__.py
│   ├── migrations
│   │   └── __init__.py
│   ├── models.py
│   ├── tests.py
│   └── views.py
├── manage.py
├── photoarchive
│   ├── admin.py
│   ├── apps.py
│   ├── __init__.py
│   ├── migrations
│   │   └── __init__.py
│   ├── models.py
│   ├── tests.py
│   └── views.py
├── somesite
│   ├── __init__.py
│   ├── __pycache__
│   │   ├── __init__.cpython-34.pyc
│   │   ├── settings.cpython-34.pyc
│   │   ├── urls.cpython-34.pyc
│   │   └── wsgi.cpython-34.pyc
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
└── tests
    ├── functional_test.py
    ├── __init__.py
    ├── __pycache__
    │   ├── functional_test.cpython-34.pyc
    │   ├── __init__.cpython-34.pyc
    │   └── validators.cpython-34.pyc
    └── validators.py

functional_test.py

from selenium import webdriver
from django.test import TestCase
import pdb

class HomePageTest(TestCase):
    def setUp(self):
        self.browser = webdriver.Firefox()
        self.browser.implicitly_wait(3)
        pdb.set_trace()

    def tearDown(self):
        self.browser.quit()


    def test_home_page(self):
        #Edith goes to home page.
        self.browser.get("http://localhost:8000")

        #Edith sees "Hello, world" in the browser title.
        estimated_browser_title ="Hello, world"
        real_browswer_title = self.browser.title 
        self.assertIn(estimated_browser_title, real_browswer_title)

I run the test:

(venv) michael@michael:~/workspace/mysite/somesite$ python manage.py test tests
Creating test database for alias 'default'...

----------------------------------------------------------------------
Ran 0 tests in 0.000s

OK
Destroying test database for alias 'default'...

Could you help me understand why my tests are not executed. I set a pdb breakpoint. The interpreter doesn't stop at that breakpoint. Well, tests are ignored.

Could you give me a kick here?


Solution

  • Django's test runner will only discover tests inside apps that are included in INSTALLED_APPS. Rather than putting your code in a functional_test.py file inside a tests directory, you should put it in a file called tests.py inside one of the app directories.