Ask Your Question

Running Askbot test suites

asked 2011-12-20 08:14:57 -0600

Jacob Oscarson's avatar

updated 2011-12-20 09:42:42 -0600


I'm preparing some customizations that might go a bit deeper than skin customization. Therefore I'm investigating the tests found in askbot/tests. However, I don't find any obvious way to run them (I see there's a tox specification file in there, though). Are there descriptions somewhere on how to run them?

And if I get them running, how much of the test suites are expected to pass?

Edit: here's my

## Django settings for ASKBOT enabled project.
import os.path
import logging
import sys
import askbot

#this line is added so that we can import pre-packaged askbot dependencies
sys.path.append(os.path.join(os.path.dirname(askbot.__file__), 'deps'))

DEBUG = False#set to True to enable debugging
TEMPLATE_DEBUG = False#keep false when debugging jinja2 templates

    ('Your Name', ''),


DATABASE_ENGINE = 'django.db.backends.sqlite3' # only postgres (>8.3) and mysql are supported so far others have not been tested yet
DATABASE_NAME = ':memory:'             # Or path to database file if using sqlite3.
DATABASE_USER = ''             # Not used with sqlite3.
DATABASE_PASSWORD = ''         # Not used with sqlite3.
DATABASE_HOST = ''             # Set to empty string for localhost. Not used with sqlite3.
DATABASE_PORT = ''             # Set to empty string for default. Not used with sqlite3.

#outgoing mail server settings
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'

#incoming mail settings
#after filling out these settings - please
#go to the site's live settings and enable the feature
#"Email settings" -> "allow asking by email"
#   WARNING: command post_emailed_questions DELETES all
#            emails from the mailbox each time
#            do not use your personal mail box here!!!

# Local time zone for this installation. Choices can be found here:
# although not all choices may be available on all operating systems.
# On Unix systems, a value of None will cause Django to use the same
# timezone as the operating system.
# If running in a Windows environment this must be set to the same as your
# system time zone.
TIME_ZONE = 'America/Chicago'


# If you set this to False, Django will make some optimizations so as not
# to load the internationalization machinery.
USE_I18N = True

# Absolute path to the directory that holds media.
# Example: "/home/media/"
ASKBOT_FILE_UPLOAD_DIR = os.path.join(os.path.dirname(__file__), 'askbot', 'upfiles')

PROJECT_ROOT = os.path.dirname(__file__)

# URL prefix for admin media -- CSS, JavaScript and images. Make sure to use a
# trailing slash.
# Examples: "", "/media/".
ADMIN_MEDIA_PREFIX = '/admin/media/'

# Make up some unique string, and don't share it with anybody.
SECRET_KEY = 'sdljdfjkldsflsdjkhsjkldgjlsdgfs s '

# List of callables that know how to import templates from various sources.
    #below is askbot stuff for this tuple

    #'django ...
edit retag flag offensive close merge delete


Try using on-disk database, not :memory: and before running the tests do python syncdb --migrate, I've just tried your setup and found out that with in-memory database the test runner does not work.

Evgeny's avatar Evgeny  ( 2011-12-20 11:34:17 -0600 )edit

I did get it to run a bit further, using this commit.

Jacob Oscarson's avatar Jacob Oscarson  ( 2011-12-20 15:08:21 -0600 )edit

2 Answers

Sort by ยป oldest newest most voted

answered 2011-12-20 08:24:16 -0600

Evgeny's avatar

The tests can be run this way:

python test askbot
edit flag offensive delete link more


This implies that you have created a project? (I have sources cloned in another directory than my project for experimentation)

Jacob Oscarson's avatar Jacob Oscarson  ( 2011-12-20 08:34:20 -0600 )edit

hmm, if askbot is in the installed apps, then the tests should run that way, regardless of where the app files are. But if you have issues with the command - like no tests run when you type the command - the test library might need to be debugged - insert import pdb; pdb.set_trace() line in the beginning of askbot/tests/ then step through. There might be some import error or something like that. On my development box the tests run ok.

Evgeny's avatar Evgeny  ( 2011-12-20 08:37:53 -0600 )edit

I've created a lab project (calling it 'dev' here) in my cloned directory. When running python dev/ test askbot against that I get a long traceback ending like this: File "/Users/jacob/src/oss/askbot-dev/src/askbot/askbot/deps/livesettings/", line 336, in _value raise SettingNotSet("Startup error, couldn't load %s.%s" %(, self.key)) askbot.deps.livesettings.models.SettingNotSet: ("Startup error, couldn't load EXTERNAL_KEYS.RECAPTCHA_SECRET", None)

Jacob Oscarson's avatar Jacob Oscarson  ( 2011-12-20 08:38:04 -0600 )edit

This error is hard to debug. Can you send me sources of your project? Maybe something is missing in did you use that comes with askbot as a starting point and then added your app or the other way around? There are a couple of issues associated with the live settings module that I would like to resolve, but need failing test cases for that.

Evgeny's avatar Evgeny  ( 2011-12-20 08:43:10 -0600 )edit

We will look hard into this issue, I actually have a branch with that exact error, I will look again.

Evgeny's avatar Evgeny  ( 2011-12-20 08:54:22 -0600 )edit

answered 2011-12-20 10:13:03 -0600

Jacob Oscarson's avatar

updated 2011-12-20 10:16:16 -0600

I managed to get a test run that seems more promising by modifying the of the dummy project with the follow code after the import sections:

import sys, os
if 'DJANGO_SETTINGS_MODULE' not in os.environ:
    os.environ['DJANGO_SETTINGS_MODULE'] = 'dev.settings' # <-- name of my dummy project

if 'test' in sys.argv:
    from dev import settings # <-- my dev project's settings module here
        settings.SITE_ID: {'SETTINGS':
                {'EXTERNAL_KEYS': {
                    'RECAPTCHA_SECRET': 'xxx'

    from django.test.utils import setup_test_environment, teardown_test_environment
    if 'south' in settings.INSTALLED_APPS:
        from import patch_for_test_db_setup
    from django.db import connection
    connection.creation.create_test_db(1, True)

The test suites seems to be taking quite long time to run on my machine even with an sqlite3 :memory: database, but I suppose that's to be expected. I'll let it run through when I get time. It does seem to throw occasional failures, though.

SOUTH setup in test environments from my fork of django-pytest.

edit flag offensive delete link more


We use development version of South right now as there was some issue with a released one, never heard of django-pytest... The workaround looks interesting, but not sure too many hacks can stand on top of each other:).

Evgeny's avatar Evgeny  ( 2011-12-20 11:37:08 -0600 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower


Asked: 2011-12-20 08:14:57 -0600

Seen: 3,030 times

Last updated: Dec 20 '11