Полный цикл разработки на Python + Django
-
Upload
azamat-tokhtaev -
Category
Technology
-
view
2.494 -
download
2
Transcript of Полный цикл разработки на Python + Django
Разработка на 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 – Устанавливаем на сервер
Спасибо за внимание