Тестирование моделей Django с салатом? - PullRequest
1 голос
/ 01 августа 2011

Салат выглядит как довольно хорошая среда тестирования BDD для приложений Django;Тем не менее, я не нашел никаких примеров или документации, как тестировать модели с ним.Есть что-нибудь доступное?

Ответы [ 2 ]

0 голосов
/ 11 октября 2013

Похоже, что это сообщение было сделано некоторое время назад, хотя для меня это были лучшие результаты, так что вот мои выводы.

Lettuce имеет декораторы @before.runserver и @after.runserver для Django, которые можно использовать для реализации тестовой базы данных в вашем файле terrain.py.

Я использую базу данных SQLite для этого примера и также использую South [:(], поэтому у меня есть дополнительный тест, чтобы убедиться, что SOUTH_TESTS_MIGRATE был установлен на False. У меня есть файл local_settings_test.py, который переопределяет настройки с настройками, характерными для моего тестового примера, и вызывает команду урожай как:

python manage.py harvest --settings=local_settings_test

Вот мои звонки о настройке и уничтожении. Конечно, вы можете реализовать их с другими декораторами, если вы предпочитаете сбрасывать базу данных, например, при каждой функции, сценарии или шаге. Обратитесь к http://lettuce.it/reference/terrain.html для получения дополнительной информации о том, что доступно для вас.

from lettuce import *
from django.conf import settings
from django.core.management.base import CommandError
from django.core.management import call_command


def assert_test_database():

    """
    Raises a CommandError in the event that the database name does not contain
    any reference to testing.

    Also checks South settings to ensure migrations are not implemented.
    """

    if not '-test' in settings.DATABASES['default']['NAME']:
        raise CommandError('You must run harvest with a test database')

    if getattr(settings, 'SOUTH_TESTS_MIGRATE', True):
        raise CommandError('SOUTH_TESTS_MIGRATE should be set to False')


@before.runserver
def create_database(server):

    """
    Asserts the database name is correct and creates initial structure, loading
    in any test_data fixtures which may have been created.
    """

    assert_test_database()
    call_command('syncdb', interactive=False, verbosity=0)
    call_command('loaddata', 'test_data', interactive=False, verbosity=0)


@after.runserver
def flush_database(server):

    """
    Asserts the database name is correct and flushes the database.
    """

    assert_test_database()
    call_command('flush', interactive=False, verbosity=0)

После того, как вы добавили эти шаги в свой файл ландшафта, вы можете вызывать модели на своих шагах, как при тестировании модулей.

0 голосов
/ 21 сентября 2011

ну, я искал то же самое, но не смог найти никакой подходящей документации или учебника для этого.Просто чтобы проверить валидации на моделях и проверить правильность отношений, я попытался вывести и извлечь значения из сценариев и проверить их.Это большая часть проверок, которые могут потребоваться для проверки по модели, я думаю.

...