Tuesday, August 11, 2009

django, manage.py test

Как запустить юниттесты в джанго-проекте, если не используется база данных?

Правильно, прописать в settings.TEST_RUNNER свой запускальщик тестов. Можно просто скопировать (что я и сделал) стандартный джанговский django.test.simple.run_tests, убрав из него все упоминания о базе данных.

у меня получилось что-то такое:

# -*- coding: utf-8 -*-
import unittest

from django.conf import settings
from django.db.models.loading import get_apps, get_app
from django.test.simple import build_test, build_suite, reorder_suite
from django.test.utils import setup_test_environment, teardown_test_environment
from django.test.testcases import TestCase

def run_tests(test_labels, verbosity=1, interactive=True, extra_tests=[]):
setup_test_environment()

settings.DEBUG = False
suite = unittest.TestSuite()

if test_labels:
for label in test_labels:
if '.' in label:
suite.addTest(build_test(label))
else:
app = get_app(label)
suite.addTest(build_suite(app))
else:
for app in get_apps():
suite.addTest(build_suite(app))

for test in extra_tests:
suite.addTest(test)

suite = reorder_suite(suite, (TestCase,))

result = unittest.TextTestRunner(verbosity=verbosity).run(suite)
teardown_test_environment()

return len(result.failures) + len(result.errors)

No comments:

Post a Comment

Labels