Friday, December 25, 2015

Re: Running unittests on different databases

On 25/12/2015 7:09 PM, varun naganathan wrote:
> Hi,
> I basically want to know how i can run unittests on different
> databases like Postgres and Mysql.The documnetation says something about
> writing a custom settings file.However I'm unable to actually understand
> how actually the settings file must look.
> Could someone perhaps post a sample file ??

It is quite simple and fully documented in Two Scoops of Django which I
recommend with enthusiasm.

One of the options in testing is --settings=<whatever> where you can
nominate any settings file you like. For example settings.test_mysql

To follow the Two Scoops recipe you create a settings directory and a
base settings file with all the settings which are common to all
scenarios you wish to run. Hence you might have basic settings specified
in ../settings/base.py - including your regular database settings eg.,

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': <database_name>,
'USER': <database_user>,
'PASSWORD': <database_pass>,
'HOST': <database_host>,
'PORT': database_port>,
}
}

... all exactly as set out in Django docs which I'm sure you have
already studied.

Then in the same directory you have eg., test_mysql.py which needs to
import the base.py settings into its own (ie., test_mysql) namespace
like this ...

from __future__ import absolute_import
from .base import *

# now overwrite/override particular base.py settings
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.<mysql_interface*>',
'NAME': <database_name>,
'USER': <database_user>,
'PASSWORD': <database_pass>,
'HOST': <database_host>,
'PORT': database_port>,which take your fancy.
}
}

* Don't know what that is because I don't use it.

So this lets you name any settings file - provided that it imports the
settings you don't wish to rewrite - and in which you can rewrite any
settings or even add other settings or other code which suits your needs.

To continue the recipe I have a settings/production.py which imports
"base" in the same manner and adds its own changes (if any). Similarly,
settings/mike for my own development settings where different than those
in base.py and so it goes.

All the best

Mike

>
> --
> You received this message because you are subscribed to the Google
> Groups "Django users" group.
> To unsubscribe from this group and stop receiving emails from it, send
> an email to django-users+unsubscribe@googlegroups.com
> <mailto:django-users+unsubscribe@googlegroups.com>.
> To post to this group, send email to django-users@googlegroups.com
> <mailto:django-users@googlegroups.com>.
> Visit this group at https://groups.google.com/group/django-users.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/django-users/f2f08c73-83ea-4f68-8fca-70e64d97b25d%40googlegroups.com
> <https://groups.google.com/d/msgid/django-users/f2f08c73-83ea-4f68-8fca-70e64d97b25d%40googlegroups.com?utm_medium=email&utm_source=footer>.
> For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/567D2E95.6000404%40dewhirst.com.au.
For more options, visit https://groups.google.com/d/optout.

No comments:

Post a Comment