I want to test a view in my Django application. So I open the python shell by typing python and then I type from django.test.utils import setup_test_environment. It seems to work fine. Then I type setup_test_environment() and it says 

django.core.exceptions.ImproperlyConfigured: Requested setting
  EMAIL_BACKEND, but settings are not configured. You must either define
  the environment variable DJANGO_SETTINGS_MODULE or call
  settings.configure() before accessing settings.

I don't need to send mails in my test, so why does Django wants me to configure an email back-end ?
Are we forced to configure an email back-end for any test even if it doesn't need it ?
You don't need to define the EMAIL_BACKEND setting (it has a default), but you do need to define a setting module. You can set the DJANGO_SETTINGS_MODULE in your shell environment, or set os.environ['DJANGO_SETTINGS_MODULE'] to point to your settings module.
Note that calling python manage.py shell will set up the Django environment for you, which includes setting DJANGO_SETTINGS_MODULE and calling django.setup(). You still need to call setup_test_environment() to manually run tests in your python shell.
django testing without email backend