Skip to main content

Slightly modified test utils from django-cms as a own module

Project description

================
django-easytests
================

Utils for test setup based on test utils from django-cms

Installation
------------

For the current stable version:

::

pip install django-easytests

For the development version:

::

pip install -e git+git://github.com/fivethreeo/django-easytests.git@develop#egg=django-easytests

Example usage in develop.py:
-----------------------------

::

#!/usr/bin/env python

from djeasytests.testsetup import TestSetup

settings = dict(
ROOT_URLCONF='appname_test_project.urls',
INSTALLED_APPS = [
'appname_test_project',
'appname',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.admin',
'django.contrib.sites',
'django.contrib.staticfiles'
]
)

testsetup = TestSetup(
appname='appname',
test_settings=settings
)

if __name__ == '__main__':
testsetup.run(__file__)

Project structure
-----------------

How to lay out files for using django-easytests::

django-appname
...
appname/
__init__.py
views.py
urls.py
models.py
tests.py
testing/
appname_test_project/
__init__.py
templates/appname/
README.rst
MANIFEST.in
LICENSE
.travis.yml
develop.py
...

Running tests and commands
--------------------------

::

develop.py test
develop.py --failfast test
develop.py --parallel test
develop.py --migrate test
develop.py test test_labels here
develop.py timed test
develop.py isolated test
develop.py manage help
develop.py manage syncdb
develop.py server

Using a custom database
-----------------------

Simply set a environment varable::

export DATABASE_URL="postgres://myuser:mypass@localhost/mydb"

Then test, server and manage will use this database.

Using existing settings:
-----------------------

Useful for testing projects

appname/base_settings.py
========================

::

ROOT_URLCONF = 'appname.urls',
INSTALLED_APPS = [
'appname'.
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.admin',
'django.contrib.sites',
'django.contrib.staticfiles'
]


appname/settings.py
===================

::

from appname.base_settings import *
from local_settings import *

appname/local_settings.py
=========================

::

SOME_LOCAL_SETTING = False


develop.py
==========

::

settings = dict(
DEBUG = True
)

from appname import base_settings
testsetup = TestSetup(
appname='appname',
test_settings=settings,
fallback_settings=base_settings
)

if __name__ == '__main__':
testsetup.run(__file__)

default_settings
================

By default fallback_settings gets merged with default_settings ( by default django.conf.global_settings) like in djangos settings.configure.

This can be changed by passing default_settings with a module/object other than global_settings to TestSetup.

::

from appname import other_global_settings
testsetup = TestSetup(
appname='appname',
test_settings=settings,
fallback_settings=base_settings,
default_settings=other_global_settings
)

Additional apps (test_modules) for testing
==========================================

Say you want this filestructure when the amount of test increase exponentially::

django-appname
...
appname/
__init__.py
views.py
urls.py
models.py
testing/
appname_test_project/
__init__.py
templates/appname/
appname_modeltests/
__init__.py
tests.py
models.py
appname_admintests/
__init__.py
tests.py
models.py
appname_somothertests/
__init__.py
tests.py
models.py
README.rst
MANIFEST.in
LICENSE
.travis.yml
develop.py
...

In develop.py::

from djeasytests.testsetup import TestSetup

settings = dict(
ROOT_URLCONF='appname_test_project.urls',
INSTALLED_APPS = [
'appname_modeltests',
'appname_admintests',
'appname_somothertests',
'appname_test_project',
'appname',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.admin',
'django.contrib.sites',
'django.contrib.staticfiles'
]
)

testsetup = TestSetup(
appname='appname',
test_settings=settings,
test_modules=['appname_modeltests','appname_admintests','appname_somothertests']
)


if __name__ == '__main__':
testsetup.run(__file__)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-easytests-0.9.1.zip (11.9 kB view details)

Uploaded Source

File details

Details for the file django-easytests-0.9.1.zip.

File metadata

File hashes

Hashes for django-easytests-0.9.1.zip
Algorithm Hash digest
SHA256 5dd3b07e1a4ea19c7c51f659b95cb17ee80daf7b4f7b083e9a542e278024dc1d
MD5 192c3e70ddfd7d0841447a387ad56b5c
BLAKE2b-256 9d5550951d6a579cb1500b4853d092521023eaf4ec62ff12f05ae6d18ca44330

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page