20
Разработка на Python+Django От установки окружения до автоматической поставки на продакшин сервер IT Attractor Resourcing Cent Азамат Тохтаев

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

Embed Size (px)

Citation preview

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

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

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

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

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

Содержание

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

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

Литература

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

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

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

• 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/

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

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

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

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

Виртуальное окружение> 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

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

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

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

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

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

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

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

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

> pip freeze

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

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

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

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

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

> python django-admin.py startproject carshop

> ./manage.py startapp cars

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

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

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

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

> ./manage.py test cars

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

Page 12: Полный цикл разработки на Python + 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

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

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

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

> manage.py harvest

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

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

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

carshop

carshop …

carsfeatures

cars.feature

steps.py…

manage.py

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

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

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

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

terrain.py

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

steps.py

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

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

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

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

carshopcarshop

carsfabfile.py

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

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

fabfile.py

> fab update:demo,1.0.1

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

Выводы

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

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

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