I am trying to connect lettuce with standard django test. Lettuce works fine when working on its own. However, when I import Client from django.test.client I get the error: "Settings cannot be imported, because environment variable DJANGO_SETTINGS_MODULE is undefined."
My steps.py looks like:
from lettuce import *
from django.test.client import Client
@before.all
def set_browser():
world.browser = Client()
@step(r'I access the url "(.*)"')
def have_the_number(step,url):
world.response = world.browser.get(url)
I get the following error
File "/usr/local/bin/lettuce", line 9, in <module>
load_entry_point('lettuce==0.1.34', 'console_scripts', 'lettuce')()
File "/Library/Python/2.7/site-packages/lettuce-0.1.34-py2.7.egg/lettuce/lettuce_cli.py", line 71, in main
result = runner.run()
File "/Library/Python/2.7/site-packages/lettuce-0.1.34-py2.7.egg/lettuce/__init__.py", line 114, in run
self.loader.find_and_load_step_definitions()
File "/Library/Python/2.7/site-packages/lettuce-0.1.34-py2.7.egg/lettuce/fs.py", line 42, in find_and_load_step_definitions
module = __import__(to_load)
File "/Users/aliahsan/djcode/drftest/features/steps.py", line 2, in <module>
from django.test.client import Client
File "/Library/Python/2.7/site-packages/django/test/__init__.py", line 5, in <module>
from django.test.client import Client, RequestFactory
File "/Library/Python/2.7/site-packages/django/test/client.py", line 27, in <module>
from django.db import transaction, close_connection
File "/Library/Python/2.7/site-packages/django/db/__init__.py", line 14, in <module>
if not settings.DATABASES:
File "/Library/Python/2.7/site-packages/django/utils/functional.py", line 276, in __getattr__
self._setup()
File "/Library/Python/2.7/site-packages/django/conf/__init__.py", line 40, in _setup
raise ImportError("Settings cannot be imported, because environment variable %s is undefined." % ENVIRONMENT_VARIABLE)
ImportError: Settings cannot be imported, because environment variable DJANGO_SETTINGS_MODULE is undefined.
I have tried to set the DJANGO_SETTINGS_MODULE variable in init.py file but it doesn't work either. Can someone help me with this?
I had actually been following the getting started tutorial and was using Lettuce command from within the app folder and it wasn't locating any settings file for django. Got the fix after realizing to, run
python manage.py harvest
command from the project folder and it works. You can mention the app next to harvest if you want to test just a particular app in your project. By default it tests all the features in all the apps installed in your settings file.