I'm hoping someone can help me improve this process.

Short:

    I want to run Selenium tests during Django's unit tests.

When 'manage.py test' is running, there's no dev server available for Selenium.

If I run my Django app separately, changes to the database are cumulative instead of discrete, like Django's own tests.

My current solution:

I have a bash script that re-loads my local database from my test fixtures then runs my app (via gunicorn) in the background.

Then I run 'manage.py test' and my tests (including the Selenium tests) run.

Afterwards, my bash script sends a 'kill' command to the process ID of my gunicorn script.

This works, but:

The Selenium tests each run from the same database, so db changes are cumulative.

I have to create the database each time, separate from the one Django's TestCase instances are using. This also replaces my local development database each time, which isn't a problem because I reload it from the fixtures regularly anyway, but is mildly inconvenient.

Alternative method:

It's possible to use subprocess in a TestCase setUp and tearDown to launch the Django dev server each time. This fixes the fixture refresh issue. However, this requires a separate settings.py file for testing to set the "default" database settings to what the real settings.py file uses for the test database. I don't like this solution because it makes it impossible to use an in-memory sqlite3 database and the interaction with the command line via subprocess gets messy.

I found django-nose-selenium via a Google search, but it requires the Java Selenium server to be running. It also adds a lot of extra stuff to my project: installed apps, extra settings, extra command-line commands required, and more complicated TestCases. I'm just using the Selenium webdriver in a unittest.TestCase and it works great without any of that. I don't want to add all that complexity just to get fresh fixtures for each test.

Thanks,
Shawn


--
You received this message because you are subscribed to the Google Groups "Django 
users" group.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to