Полный цикл разработки на Python + Django

Preview:

Citation preview

Разработка на Python+Django

От установки окружения до автоматической поставки на продакшин сервер

IT Attractor Resourcing CentreАзамат Тохтаев

Содержание

1. Литература и инструменты2. Установка и настройка окружения для команды разработчиков3. Разработка стиле TDD4. Автоматизированное приемочное тестирование5. Автоматизируем установку на демо и продакшин сервера

Литература

• Learn Python The Hard Way - http://learnpythonthehardway.org/• Django Book - http://www.djangobook.com

Основные инструменты

• PyPI — Центральный репозиторий пакетов включающий в себя более 34 000 готовых решений - https://pypi.python.org

• virtualenv — создание разных виртуальных окружений для проектов - http://www.virtualenv.org/en/latest/

• pip — установщик пакетов для python - https://pypi.python.org/pypi/pip

• Fabric – инструмент для поставки сервер и выполенения административных задач – http://fabfile.org/

Установка и настройка окружения для команды разработчиковУставнока python> sudo apt-get install python2.7

или для тех кто хочет идти быть на передовой> sudo apt-get install python3

Виртуальное окружение> sudo apt-get install python-setuptools

> sudo pip install virtualenv

// Создаем пустое виртуальное окружение для проекта

> virtualenv --no-site-packages env

// Устанавливаем туда pip и easy_install

> virtualenv --distribute virtualenv

//включение виртуального окружения

> source virtualenv/bin/activate

//отключение

> deactivate

Установка зависимостей

> pip install название_пакета

// из локальной папки

> pip install /путь/до/пакета

// из репозитория

> pip install git+repo (git+, https+, etc.)

//Фиксируем зависимости

> pip freeze

Пример файла зависимостей

requirements.txtDjango==1.5.1Fabric==1.7.0Pillow==2.1.0South==0.8.1lettuce==0.2.18selenium==2.34.0

> pip install -r requirements.txt

Создание проекта на Django> pip install django

> python django-admin.py startproject carshop

> ./manage.py startapp cars

carshop carshop settings.py

wsgi.py

urls.py

cars models.py

views.py

admin.py

forms.py

tests.py

urls.py

manage.py

Настройки проекта

Файл для запуска на apache сервере

Главный файл маршрутизации ссылок

Классы моделейФункции и классы действийАдминская часть для нашего приложенияКлассы формТестыМаршрутизация ссылок

Консольный инструмент для выполнения команд в Django

• Не тестируйте то что уже протестировано• Проверяйте в отдельном тесте одну и только одну функцию• Тесты пишутся для бизнес логики• Модель это не бизнес логика, а её данные

> ./manage.py test cars

Начинаем с unit-тестов на Django

def testGetCarPrice():

car = self._create_test_car()

dealer = self._create_test_dealer()

price_calculator = PriceCalculator(car, dealer)

price = price_calculator.get_price()

self.assertEqual(13450, price)

def _create_test_car():

car = Car()

car.year = 2002

car.model = “TT”

car.brand = “Audi”

car.save()

return car

Приемочное тестирование

Инструмент Lettuce – BDD фреймворк для Python – http://lettuce.it

> manage.py harvest

ПримерСценарий: Пользователь видит форму банковских реквизитов

Допустим пользователь авторизовался в системеИ выбрал автомобиль “Bentley” “2013” года выпускаЕсли нажимат на кнопку “Купить”То видит форму заполнения банковских реквизитов

carshop

carshop …

carsfeatures

cars.feature

steps.py…

manage.py

terrain.py Подготовка окружения для запуска тестов

Сценарии тестов

Описание шагов

terrain.py

steps.py

Установка на сервер

Инструмент • Python Fabric - http://fabfile.org/

> fab –H %HOST% update:demo,1.0.1

carshopcarshop

carsfabfile.py

Инструкции установки

fabfile.py

> fab update:demo,1.0.1

Выводы

• Virtualenv – Установка и работа с окружением• Django – Реализуем нашу идею• Lettuce – Тестируем в браузере• Fabric – Устанавливаем на сервер

Спасибо за внимание

Recommended