Skip to content

Instantly share code, notes, and snippets.

@agamdua
Created October 1, 2013 15:22
Show Gist options
  • Save agamdua/6780163 to your computer and use it in GitHub Desktop.
Save agamdua/6780163 to your computer and use it in GitHub Desktop.
from lettuce import before, after, world
from splinter.browser import Browser
from django.test.utils import setup_test_environment, teardown_test_environment
from django.core.management import call_command
from django.db import connection
from django.conf import settings
from django.test.simple import DjangoTestSuiteRunner
from django.contrib.auth.models import User
import logging
@before.harvest
def initial_setup(server):
logging.info("Setting up a test database ...\n")
world.test_runner = DjangoTestSuiteRunner(interactive=False)
# Setup environment.
world.test_runner.setup_test_environment()
# Create Base DB
world.test_db = world.test_runner.setup_databases()
call_command('syncdb', interactive=False, verbosity=0)
call_command('flush', interactive=False, verbosity=0)
call_command('migrate', interactive=False, verbosity=0)
call_command('loaddata', 'all', verbosity=0)
setup_test_environment()
world.browser = Browser('firefox')
@before.each_scenario
def reset_data(scenario):
# Clean up django.
call_command('flush', interactive=False, verbosity=0)
call_command('loaddata', 'emails/features/emails_fixture.json', verbosity=0)
call_command('loaddata', 'websites/features/websites_fixture.json', verbosity=0)
testuser_01 = User.objects.create_user(
username='testuser01@example.com',
password='testuser01@example.com',
email='testuser01@example.com'
)
testuser_01.is_active = True
testuser_01.save()
@before.each_feature
def before_each_feature(feature):
logging.info("Flusing db ... \n")
call_command('flush', interactive=False, verbosity=0)
@after.all
def after_all(total):
logging.info("Destroy test database ...\n")
world.browser.quit()
# Destroy database.
world.test_runner.teardown_databases(world.test_db)
# Tear Down the test environment.
world.test_runner.teardown_test_environment()
@world.absorb
def log_in():
world.browser.fill('username', 'testuser01@example.com')
[b for b in world.browser.find_by_tag('button')\
if 'Login' in b.text][0].click()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment