Collection of testcases and helpers to test Django projects and applications with nose and twill libraries.
- Key features
- Quick examples
- Requirements
- Installation
- License
- Documentation
- Sending bugs and feature requests
- Contacts
- Support of assert methods from unittest2 library (
assertIn
,assertIs
and others). - Full support of all features from
django.test.TestCase
ordjango.test.TransationalTestCase
classes. - Run tests for Django projects and applications via
nosetests
command instead ofpython manage.py test
. You don't need to place tests intests
module -nosetests
automaticly find its in project or application. - Assert methods for testing Django models (
assert_create
,assert_count
, etc). - Test web responses with
twill
library instead of usingdjango.test.Client
. - Helpers for make particular actions in tests (create users or superusers, login or logout from projects).
Check that username
field of standart auth.User
model is unique:
from tddspry.django import TestCase from django.contrib.auth.models import User TEST_EMAIL = '[email protected]' TEST_PASSWORD = 'test-password' TEST_USERNAME = 'test-username' class TestUserModel(TestCase): def test_unique(self): self.assert_create(User, username=TEST_USERNAME, password=TEST_PASSWORD, email=TEST_EMAIL) self.assert_raises(Exception, self.assert_create, User, username=TEST_USERNAME, password=TEST_PASSWORD, email=TEST_EMAIL)
Login into project and check that login url does not exist in index page and logout and profile links exist:
from tddspry.django import TestCase class TestHttp(TestCase): def setup(self): # Create user self.user = self.helper('create_user') # Login this user into project self.login(self.helpers.USERNAME, self.helpers.PASSWORD) def test_index_links(self): # Login, logout and profile urls login_url = self.build_url('auth_login') logout_url = self.build_url('auth_logout') profile_url = self.build_url('auth_profile') # Go to index page self.go200('/') # Login url does not exist cause user already logged in self.notfind(login_url) # But logout and profile url exist # Profile url must find at page 3 times self.find(logout_url) self.find(profile_url, count=3)
There are three ways to run tests in your project.
First, using nosetests
command, e.g.:
$ nosetests --with-django --django-settings=project.settings project $ DJANGO_SETTINGS_MODULE=project.settings NOSE_WTIH_DJANGO=1 nosetests project
This way requires install tddspry
to your system.
Second, using django-nosetests.py
script, e.g.:
$ django-nosetests.py --django-settings=project.settings project $ DJANGO_SETTINGS_MODULE=project.settings django-nosetests.py project
This script is wrapper to previous method (you don't need to run nosetests
with --with-django
option or NOSE_WTIH_DJANGO
environment var), but
does not require install tddspry
to your system (it's good idea if you want
use latest development version of tddspry
). Script located in bin/
directory.
Third, using TEST_RUNNER
setting in Django >= 1.2 (requires django-nose
app installed):
TEST_RUNNER = 'tddspry.django.runner.TestSuiteRunner'
Then you can use Django's internal test
manage command to run your tests:
$ ./manage.py test
Otherwise, you can use all power of nosetests command to run tests in your Django project or applications.
- Python 2.4 or above
- Django up to trunk
- nose 0.11.0 or above
- twill 0.9
- django-nose (optional, required by test runner)
- datadiff (optional, required by
TDDSPRY_USE_DATADIFF
setting)
On most UNIX-like systems, you'll probably need to run these commands as root or using sudo.
To install use:
$ pip install tddspry
Or:
$ python setup.py install
Also, you can retrieve fresh version of tddspry
from GitHub:
$ git clone git://github.com/playpauseandstop/tddspry.git
and place tddspry
directory somewhere to PYTHONPATH
(or sys.path
).
tddspry
is licensed under the BSD License.
Sphinx-generated documentation for tddspry
located at GitHub pages. This
documentation updates after every tddspry
release.
Fresh documentation always can access in docs/
directory.
Found a bug? Have a good idea for improving tddspry? Head over to tddspry's trac to create a new ticket or to GitHub to create a new fork.
Authors: | Igor Davydenko < playpauseandstop [at] gmail >, Volodymyr Hotsyk < gotsyk [at] gmail > |
---|---|
Idea: | Andriy Khavryuchenko < akhavr [at] gmail > |