воскресенье, 11 октября 2009 г.

Тестирование Django в Eclipse

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

Вы можете писать как Doctest, так и Unit test. Подробности того, как писать тесты, какие части приложения необходимо тестировать и т.д. очень хорошо раскрыты на сайте проекта Django.

Если вас интересует как начать работать с Django+Eclipse, то прочитайте мою предыдущую статью о "Интелисенс Eclipse в Django проектах", в ней найдете описание того, что нужно сделать и какие проблемы возникают в начале работы.

И вот вы уже написали в каждом app тесты, поместив их или в файл tests.py или models.py. Что делать дальше?

Шаг 1. Настройка тестирования

Для настройки тестирования необходимо перейти в проект и в окне "Package Explorer" вызвать контекстное меню(щелчок правой кнопкой мыши), выбрать пункт "Run As"->"Run Configurtions...".
В возникшем окне добавляем новую настройку запуска в категории "Python Run", для этого выберем эту категорию и, вызвав контекстное меню, выбираем пункт "New". Созданную настройку запуска заполняем следующим образом:

1. Таб Main
Тут необходимо выбрать ваш проект, и модуль для запуска. У меня проект называется "ftd", вот он и выбран в поле "Project". "Main Module" устанавливаем наш файл manage.py (лучше это делать воспользовавшись кнопкой Browse), для моего проекта оно стало установлено в "${workspace_loc:ftd/manage.py}"
2. Таб Arguments
В данной вкладке добавляем параметры для запуска, а именно "test --verbosity=2". "test" означает, что нам необходимо запустить тестирование, а параметр "verbosity" указывает на уровень вывода детализации сообщений при тестировании.
3. Таб Environment
На этой вкладке вы можете настроить переменные окружения. Для запуска нам нужно указать, какой файл настроек использовать. Добавляем новую с параметрами "Name"="DJANGO_SETTINGS_MODULE", "Value"="setting.py".
Жмем "Run" и наблюдаем за результатом!

Оптимизация времени тестирование

При использовании 'postgresql', 'mysql', 'oracle' провайдеров данных вы получаете большие задержки в тестировании из-за того, что много времени уходить на создание таблиц и на построение индексов. Исправить данную ситуацию можно воспользовавшись провайдером 'sqlite3'.

Для этого создадим файл с настройками для тестирования settings_test.py
from settings import *
DATABASE_ENGINE = 'sqlite3'
DATABASE_NAME = ':memory:'
DATABASE_USER = ''
DATABASE_PASSWORD = ''
DATABASE_HOST = ''
DATABASE_PORT = ''

И пропишем его в переменных окружения запуска. "Name"="DJANGO_SETTINGS_MODULE", "Value"="settings_test.py".
Теперь запуск тестов уже занимает меньше времени.

fixtures в тестировании

Если у вас в app определена папка fixtures, в которой будут лежать файл "initial_data.json" или "initial_data.xml" с данными, которые необходимы для старта приложения, то такие данные при старте тестов будут загружены автоматически.

Например:

app
|-fixtures
      |-initial_data.json
      |-test_data.json
|-__init__.py
|-models.py
|-tests.py
|-urls.py
|-views.py

Так же вы в конкретном модуле тестирования можете указать загрузку данных с файлов fixture.

from django.test import TestCase
from django.test.client import Client
class MyTest(TestCase):
    fixtures = ['test_data.json']

1 комментарий:

  1. Картинки не видны, а очень хочется посмотреть

    ОтветитьУдалить