SlideShare ist ein Scribd-Unternehmen logo
1 von 20
Разработка на
Python+Django
От установки окружения до автоматической поставки на продакшин
сервер
IT Attractor Resourcing CentreАзамат Тохтаев
Содержание
1. Литература и инструменты
2. Установка и настройка окружения для команды разработчиков
3. Разработка стиле TDD
4. Автоматизированное приемочное тестирование
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.txt
Django==1.5.1
Fabric==1.7.0
Pillow==2.1.0
South==0.8.1
lettuce==0.2.18
selenium==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 …
cars
features
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
carshop
carshop
cars
fabfile.py
Инструкции установки
fabfile.py
> fab update:demo,1.0.1
Выводы
• Virtualenv – Установка и работа с окружением
• Django – Реализуем нашу идею
• Lettuce – Тестируем в браузере
• Fabric – Устанавливаем на сервер
Спасибо за внимание

Weitere ähnliche Inhalte

Was ist angesagt?

Курс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с MavenКурс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven7bits
 
Anton Tsitou "Cycle ORM and Graphs"
Anton Tsitou "Cycle ORM and Graphs"Anton Tsitou "Cycle ORM and Graphs"
Anton Tsitou "Cycle ORM and Graphs"Fwdays
 
Serghei Iakovlev "Chaos engineering in action"
Serghei Iakovlev "Chaos engineering in action"Serghei Iakovlev "Chaos engineering in action"
Serghei Iakovlev "Chaos engineering in action"Fwdays
 
Maven 3 : уличная магия
Maven 3 : уличная магияMaven 3 : уличная магия
Maven 3 : уличная магияAleksey Solntsev
 
Работаем с API по-взрослому - Максим Кислов (Badoo)
Работаем с API по-взрослому - Максим Кислов (Badoo)Работаем с API по-взрослому - Максим Кислов (Badoo)
Работаем с API по-взрослому - Максим Кислов (Badoo)AvitoTech
 
Про асинхронное сетевое программирование
Про асинхронное сетевое программированиеПро асинхронное сетевое программирование
Про асинхронное сетевое программированиеPython Meetup
 
Спецкурс 2014, занятие 4. Конфиги, сборка, автотесты
Спецкурс 2014, занятие 4. Конфиги, сборка, автотестыСпецкурс 2014, занятие 4. Конфиги, сборка, автотесты
Спецкурс 2014, занятие 4. Конфиги, сборка, автотесты7bits
 
Формальная верификация кода на языке Си
Формальная верификация кода на языке СиФормальная верификация кода на языке Си
Формальная верификация кода на языке СиPositive Hack Days
 
Easy selenium test automation on python
Easy selenium test automation on pythonEasy selenium test automation on python
Easy selenium test automation on pythonMykhailo Poliarush
 
Иван Крутов - Автоматизация сборки Java-проекта
Иван Крутов - Автоматизация сборки Java-проектаИван Крутов - Автоматизация сборки Java-проекта
Иван Крутов - Автоматизация сборки Java-проектаYandex
 
Оптимизация высоконагруженных ASP.NET приложений, работающих с MS SQL Server ...
Оптимизация высоконагруженных ASP.NET приложений, работающих с MS SQL Server ...Оптимизация высоконагруженных ASP.NET приложений, работающих с MS SQL Server ...
Оптимизация высоконагруженных ASP.NET приложений, работающих с MS SQL Server ...Stas Vyschepan
 
Олег Бартунов и Иван Панченко
Олег Бартунов и Иван ПанченкоОлег Бартунов и Иван Панченко
Олег Бартунов и Иван ПанченкоCodeFest
 
Запуск тестов с tox и Docker
Запуск тестов с tox и DockerЗапуск тестов с tox и Docker
Запуск тестов с tox и DockerAlexander Koshelev
 
Курс Java-2016. Занятие 06. Файлы и ввод-вывод
Курс Java-2016. Занятие 06. Файлы и ввод-выводКурс Java-2016. Занятие 06. Файлы и ввод-вывод
Курс Java-2016. Занятие 06. Файлы и ввод-вывод7bits
 
Скриптовой язык Groovy и его применение в рамках разработки ПО
Скриптовой язык Groovy и его применение в рамках разработки ПОСкриптовой язык Groovy и его применение в рамках разработки ПО
Скриптовой язык Groovy и его применение в рамках разработки ПОFedor Malyshkin
 
Стабы для фронтенда - Никита Мостовой (HeadHunter)
Стабы для фронтенда - Никита Мостовой (HeadHunter)Стабы для фронтенда - Никита Мостовой (HeadHunter)
Стабы для фронтенда - Никита Мостовой (HeadHunter)AvitoTech
 
Ubuntu+python+selenium=легкий старт
Ubuntu+python+selenium=легкий стартUbuntu+python+selenium=легкий старт
Ubuntu+python+selenium=легкий стартAndrey Matukhno
 
Система обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на GroovyСистема обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на GroovyRegn
 
Артём Ерошенко «Рецепт приготовления облачных тестингов»
Артём Ерошенко «Рецепт приготовления облачных тестингов»Артём Ерошенко «Рецепт приготовления облачных тестингов»
Артём Ерошенко «Рецепт приготовления облачных тестингов»WrikeTechClub
 

Was ist angesagt? (20)

Курс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с MavenКурс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
 
Anton Tsitou "Cycle ORM and Graphs"
Anton Tsitou "Cycle ORM and Graphs"Anton Tsitou "Cycle ORM and Graphs"
Anton Tsitou "Cycle ORM and Graphs"
 
Serghei Iakovlev "Chaos engineering in action"
Serghei Iakovlev "Chaos engineering in action"Serghei Iakovlev "Chaos engineering in action"
Serghei Iakovlev "Chaos engineering in action"
 
Maven 3 : уличная магия
Maven 3 : уличная магияMaven 3 : уличная магия
Maven 3 : уличная магия
 
Работаем с API по-взрослому - Максим Кислов (Badoo)
Работаем с API по-взрослому - Максим Кислов (Badoo)Работаем с API по-взрослому - Максим Кислов (Badoo)
Работаем с API по-взрослому - Максим Кислов (Badoo)
 
Про асинхронное сетевое программирование
Про асинхронное сетевое программированиеПро асинхронное сетевое программирование
Про асинхронное сетевое программирование
 
Спецкурс 2014, занятие 4. Конфиги, сборка, автотесты
Спецкурс 2014, занятие 4. Конфиги, сборка, автотестыСпецкурс 2014, занятие 4. Конфиги, сборка, автотесты
Спецкурс 2014, занятие 4. Конфиги, сборка, автотесты
 
Cистемы автоматической сборки проектов (Полина Фоминых)
Cистемы автоматической сборки проектов (Полина Фоминых)Cистемы автоматической сборки проектов (Полина Фоминых)
Cистемы автоматической сборки проектов (Полина Фоминых)
 
Формальная верификация кода на языке Си
Формальная верификация кода на языке СиФормальная верификация кода на языке Си
Формальная верификация кода на языке Си
 
Easy selenium test automation on python
Easy selenium test automation on pythonEasy selenium test automation on python
Easy selenium test automation on python
 
Иван Крутов - Автоматизация сборки Java-проекта
Иван Крутов - Автоматизация сборки Java-проектаИван Крутов - Автоматизация сборки Java-проекта
Иван Крутов - Автоматизация сборки Java-проекта
 
Оптимизация высоконагруженных ASP.NET приложений, работающих с MS SQL Server ...
Оптимизация высоконагруженных ASP.NET приложений, работающих с MS SQL Server ...Оптимизация высоконагруженных ASP.NET приложений, работающих с MS SQL Server ...
Оптимизация высоконагруженных ASP.NET приложений, работающих с MS SQL Server ...
 
Олег Бартунов и Иван Панченко
Олег Бартунов и Иван ПанченкоОлег Бартунов и Иван Панченко
Олег Бартунов и Иван Панченко
 
Запуск тестов с tox и Docker
Запуск тестов с tox и DockerЗапуск тестов с tox и Docker
Запуск тестов с tox и Docker
 
Курс Java-2016. Занятие 06. Файлы и ввод-вывод
Курс Java-2016. Занятие 06. Файлы и ввод-выводКурс Java-2016. Занятие 06. Файлы и ввод-вывод
Курс Java-2016. Занятие 06. Файлы и ввод-вывод
 
Скриптовой язык Groovy и его применение в рамках разработки ПО
Скриптовой язык Groovy и его применение в рамках разработки ПОСкриптовой язык Groovy и его применение в рамках разработки ПО
Скриптовой язык Groovy и его применение в рамках разработки ПО
 
Стабы для фронтенда - Никита Мостовой (HeadHunter)
Стабы для фронтенда - Никита Мостовой (HeadHunter)Стабы для фронтенда - Никита Мостовой (HeadHunter)
Стабы для фронтенда - Никита Мостовой (HeadHunter)
 
Ubuntu+python+selenium=легкий старт
Ubuntu+python+selenium=легкий стартUbuntu+python+selenium=легкий старт
Ubuntu+python+selenium=легкий старт
 
Система обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на GroovyСистема обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на Groovy
 
Артём Ерошенко «Рецепт приготовления облачных тестингов»
Артём Ерошенко «Рецепт приготовления облачных тестингов»Артём Ерошенко «Рецепт приготовления облачных тестингов»
Артём Ерошенко «Рецепт приготовления облачных тестингов»
 

Andere mochten auch

Panmind at Ruby Social Club Milano
Panmind at Ruby Social Club MilanoPanmind at Ruby Social Club Milano
Panmind at Ruby Social Club MilanoPanmind
 
RVM and Ruby Interpreters @ RSC Roma 03/2011
RVM and Ruby Interpreters @ RSC Roma 03/2011RVM and Ruby Interpreters @ RSC Roma 03/2011
RVM and Ruby Interpreters @ RSC Roma 03/2011Marcello Barnaba
 
Zarządzanie zamianami w relacyjnych bazach danych
Zarządzanie zamianami w relacyjnych bazach danychZarządzanie zamianami w relacyjnych bazach danych
Zarządzanie zamianami w relacyjnych bazach danychMarcinStachniuk
 
Liquibase - Zarządzanie zmianami w relacyjnych bazach danych
Liquibase - Zarządzanie zmianami w relacyjnych bazach danychLiquibase - Zarządzanie zmianami w relacyjnych bazach danych
Liquibase - Zarządzanie zmianami w relacyjnych bazach danychMarcinStachniuk
 
Python: легко и просто. Красиво решаем повседневные задачи.
Python: легко и просто. Красиво решаем повседневные задачи.Python: легко и просто. Красиво решаем повседневные задачи.
Python: легко и просто. Красиво решаем повседневные задачи.Python Meetup
 
Practical Python Packaging / Стас Рудаков / Web Developer Wargaming
 Practical Python Packaging / Стас Рудаков / Web Developer Wargaming Practical Python Packaging / Стас Рудаков / Web Developer Wargaming
Practical Python Packaging / Стас Рудаков / Web Developer WargamingPython Meetup
 
Dictionary в Python. По мотивам Objects/dictnotes.txt
Dictionary в Python. По мотивам Objects/dictnotes.txtDictionary в Python. По мотивам Objects/dictnotes.txt
Dictionary в Python. По мотивам Objects/dictnotes.txtPython Meetup
 
Все самые важные команды SQL за 60 минут
Все самые важные команды SQL за 60 минутВсе самые важные команды SQL за 60 минут
Все самые важные команды SQL за 60 минутSkillFactory
 
Python для анализа данных
Python для анализа данныхPython для анализа данных
Python для анализа данныхPython Meetup
 
Failcon Atlanta - A Post-mortem of a healthcare startup
Failcon Atlanta - A Post-mortem of a healthcare startupFailcon Atlanta - A Post-mortem of a healthcare startup
Failcon Atlanta - A Post-mortem of a healthcare startupClassPass
 

Andere mochten auch (12)

Panmind at Ruby Social Club Milano
Panmind at Ruby Social Club MilanoPanmind at Ruby Social Club Milano
Panmind at Ruby Social Club Milano
 
RVM and Ruby Interpreters @ RSC Roma 03/2011
RVM and Ruby Interpreters @ RSC Roma 03/2011RVM and Ruby Interpreters @ RSC Roma 03/2011
RVM and Ruby Interpreters @ RSC Roma 03/2011
 
Zarządzanie zamianami w relacyjnych bazach danych
Zarządzanie zamianami w relacyjnych bazach danychZarządzanie zamianami w relacyjnych bazach danych
Zarządzanie zamianami w relacyjnych bazach danych
 
Liquibase - Zarządzanie zmianami w relacyjnych bazach danych
Liquibase - Zarządzanie zmianami w relacyjnych bazach danychLiquibase - Zarządzanie zmianami w relacyjnych bazach danych
Liquibase - Zarządzanie zmianami w relacyjnych bazach danych
 
Python: легко и просто. Красиво решаем повседневные задачи.
Python: легко и просто. Красиво решаем повседневные задачи.Python: легко и просто. Красиво решаем повседневные задачи.
Python: легко и просто. Красиво решаем повседневные задачи.
 
Practical Python Packaging / Стас Рудаков / Web Developer Wargaming
 Practical Python Packaging / Стас Рудаков / Web Developer Wargaming Practical Python Packaging / Стас Рудаков / Web Developer Wargaming
Practical Python Packaging / Стас Рудаков / Web Developer Wargaming
 
Dictionary в Python. По мотивам Objects/dictnotes.txt
Dictionary в Python. По мотивам Objects/dictnotes.txtDictionary в Python. По мотивам Objects/dictnotes.txt
Dictionary в Python. По мотивам Objects/dictnotes.txt
 
Все самые важные команды SQL за 60 минут
Все самые важные команды SQL за 60 минутВсе самые важные команды SQL за 60 минут
Все самые важные команды SQL за 60 минут
 
Retrospekcja warsztat Agile3M
Retrospekcja warsztat Agile3MRetrospekcja warsztat Agile3M
Retrospekcja warsztat Agile3M
 
Python для анализа данных
Python для анализа данныхPython для анализа данных
Python для анализа данных
 
Failcon Atlanta - A Post-mortem of a healthcare startup
Failcon Atlanta - A Post-mortem of a healthcare startupFailcon Atlanta - A Post-mortem of a healthcare startup
Failcon Atlanta - A Post-mortem of a healthcare startup
 
Penetrationtestinglovesfreesoftware libreplaner2017-christianfernandez-hispag...
Penetrationtestinglovesfreesoftware libreplaner2017-christianfernandez-hispag...Penetrationtestinglovesfreesoftware libreplaner2017-christianfernandez-hispag...
Penetrationtestinglovesfreesoftware libreplaner2017-christianfernandez-hispag...
 

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

Непрерывная интеграция - шаг к непрерывному деплойменту
Непрерывная интеграция - шаг к непрерывному деплойментуНепрерывная интеграция - шаг к непрерывному деплойменту
Непрерывная интеграция - шаг к непрерывному деплойментуИгорь Родионов
 
Непрерывная интеграция шаг к непрерывному деплою. Родионов Игорь
Непрерывная интеграция шаг к непрерывному деплою. Родионов ИгорьНепрерывная интеграция шаг к непрерывному деплою. Родионов Игорь
Непрерывная интеграция шаг к непрерывному деплою. Родионов ИгорьPVasili
 
непрерывная интеграция шаг к непрерывному деплою родионов игорь
непрерывная интеграция   шаг к непрерывному деплою родионов игорьнепрерывная интеграция   шаг к непрерывному деплою родионов игорь
непрерывная интеграция шаг к непрерывному деплою родионов игорьdrupalconf
 
Что такое Robot Framework?
Что такое Robot Framework?Что такое Robot Framework?
Что такое Robot Framework?Mykhailo Poliarush
 
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNGДмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNGDataArt
 
Jubula – TDD UI QA Automation Tool
Jubula – TDD UI QA Automation ToolJubula – TDD UI QA Automation Tool
Jubula – TDD UI QA Automation ToolCOMAQA.BY
 
Easy authcache 2 кэширование для pro. Родионов Игорь
Easy authcache 2   кэширование для pro. Родионов ИгорьEasy authcache 2   кэширование для pro. Родионов Игорь
Easy authcache 2 кэширование для pro. Родионов ИгорьPVasili
 
Highload++ 2016: Автоматизация тестирования клиентской производительности (Ла...
Highload++ 2016: Автоматизация тестирования клиентской производительности (Ла...Highload++ 2016: Автоматизация тестирования клиентской производительности (Ла...
Highload++ 2016: Автоматизация тестирования клиентской производительности (Ла...Лавлинский Николай
 
Автоматизация тестирования клиентской производительности - Лавлинский Николай...
Автоматизация тестирования клиентской производительности - Лавлинский Николай...Автоматизация тестирования клиентской производительности - Лавлинский Николай...
Автоматизация тестирования клиентской производительности - Лавлинский Николай...Николай Лавлинский
 
Автоматизация тестирования клиентской производительности / Николай Лавлинский...
Автоматизация тестирования клиентской производительности / Николай Лавлинский...Автоматизация тестирования клиентской производительности / Николай Лавлинский...
Автоматизация тестирования клиентской производительности / Николай Лавлинский...Ontico
 
Нагрузочное тестирование проектов на Drupal с использованием Apache JMeter
Нагрузочное тестирование проектов на Drupal с использованием Apache JMeterНагрузочное тестирование проектов на Drupal с использованием Apache JMeter
Нагрузочное тестирование проектов на Drupal с использованием Apache JMeterPVasili
 
Easy authcache 2 кеширование для pro родионов игорь
Easy authcache 2   кеширование для pro родионов игорьEasy authcache 2   кеширование для pro родионов игорь
Easy authcache 2 кеширование для pro родионов игорьdrupalconf
 
Как автоматизировать комплексные системы
Как автоматизировать комплексные системыКак автоматизировать комплексные системы
Как автоматизировать комплексные системыSQALab
 
Robot Framework: универсальный инструмент автоматизатора
Robot Framework: универсальный инструмент автоматизатораRobot Framework: универсальный инструмент автоматизатора
Robot Framework: универсальный инструмент автоматизатораSQALab
 
Инструменты автоматизации в SEO
Инструменты автоматизации в SEOИнструменты автоматизации в SEO
Инструменты автоматизации в SEONetpeak
 
Python Meetup
Python Meetup Python Meetup
Python Meetup iQSpace
 
QA Automation Battle: Java vs Python vs Ruby [09.04.2015]
QA Automation Battle: Java vs Python vs Ruby [09.04.2015]QA Automation Battle: Java vs Python vs Ruby [09.04.2015]
QA Automation Battle: Java vs Python vs Ruby [09.04.2015]GoIT
 
Drupal code sprint для новичков
Drupal code sprint для новичковDrupal code sprint для новичков
Drupal code sprint для новичковOvadiah Myrgorod
 

Ähnlich wie Полный цикл разработки на Python + Django (20)

Непрерывная интеграция - шаг к непрерывному деплойменту
Непрерывная интеграция - шаг к непрерывному деплойментуНепрерывная интеграция - шаг к непрерывному деплойменту
Непрерывная интеграция - шаг к непрерывному деплойменту
 
Непрерывная интеграция шаг к непрерывному деплою. Родионов Игорь
Непрерывная интеграция шаг к непрерывному деплою. Родионов ИгорьНепрерывная интеграция шаг к непрерывному деплою. Родионов Игорь
Непрерывная интеграция шаг к непрерывному деплою. Родионов Игорь
 
непрерывная интеграция шаг к непрерывному деплою родионов игорь
непрерывная интеграция   шаг к непрерывному деплою родионов игорьнепрерывная интеграция   шаг к непрерывному деплою родионов игорь
непрерывная интеграция шаг к непрерывному деплою родионов игорь
 
Что такое Robot Framework?
Что такое Robot Framework?Что такое Robot Framework?
Что такое Robot Framework?
 
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNGДмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
 
Jubula – TDD UI QA Automation Tool
Jubula – TDD UI QA Automation ToolJubula – TDD UI QA Automation Tool
Jubula – TDD UI QA Automation Tool
 
Easy authcache 2 кэширование для pro. Родионов Игорь
Easy authcache 2   кэширование для pro. Родионов ИгорьEasy authcache 2   кэширование для pro. Родионов Игорь
Easy authcache 2 кэширование для pro. Родионов Игорь
 
Highload++ 2016: Автоматизация тестирования клиентской производительности (Ла...
Highload++ 2016: Автоматизация тестирования клиентской производительности (Ла...Highload++ 2016: Автоматизация тестирования клиентской производительности (Ла...
Highload++ 2016: Автоматизация тестирования клиентской производительности (Ла...
 
Автоматизация тестирования клиентской производительности - Лавлинский Николай...
Автоматизация тестирования клиентской производительности - Лавлинский Николай...Автоматизация тестирования клиентской производительности - Лавлинский Николай...
Автоматизация тестирования клиентской производительности - Лавлинский Николай...
 
Автоматизация тестирования клиентской производительности / Николай Лавлинский...
Автоматизация тестирования клиентской производительности / Николай Лавлинский...Автоматизация тестирования клиентской производительности / Николай Лавлинский...
Автоматизация тестирования клиентской производительности / Николай Лавлинский...
 
Нагрузочное тестирование проектов на Drupal с использованием Apache JMeter
Нагрузочное тестирование проектов на Drupal с использованием Apache JMeterНагрузочное тестирование проектов на Drupal с использованием Apache JMeter
Нагрузочное тестирование проектов на Drupal с использованием Apache JMeter
 
Qt tool evaluation
Qt tool evaluationQt tool evaluation
Qt tool evaluation
 
Easy authcache 2 кеширование для pro родионов игорь
Easy authcache 2   кеширование для pro родионов игорьEasy authcache 2   кеширование для pro родионов игорь
Easy authcache 2 кеширование для pro родионов игорь
 
Как автоматизировать комплексные системы
Как автоматизировать комплексные системыКак автоматизировать комплексные системы
Как автоматизировать комплексные системы
 
Robot Framework: универсальный инструмент автоматизатора
Robot Framework: универсальный инструмент автоматизатораRobot Framework: универсальный инструмент автоматизатора
Robot Framework: универсальный инструмент автоматизатора
 
Teatro
TeatroTeatro
Teatro
 
Инструменты автоматизации в SEO
Инструменты автоматизации в SEOИнструменты автоматизации в SEO
Инструменты автоматизации в SEO
 
Python Meetup
Python Meetup Python Meetup
Python Meetup
 
QA Automation Battle: Java vs Python vs Ruby [09.04.2015]
QA Automation Battle: Java vs Python vs Ruby [09.04.2015]QA Automation Battle: Java vs Python vs Ruby [09.04.2015]
QA Automation Battle: Java vs Python vs Ruby [09.04.2015]
 
Drupal code sprint для новичков
Drupal code sprint для новичковDrupal code sprint для новичков
Drupal code sprint для новичков
 

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

  • 1. Разработка на Python+Django От установки окружения до автоматической поставки на продакшин сервер IT Attractor Resourcing CentreАзамат Тохтаев
  • 2. Содержание 1. Литература и инструменты 2. Установка и настройка окружения для команды разработчиков 3. Разработка стиле TDD 4. Автоматизированное приемочное тестирование 5. Автоматизируем установку на демо и продакшин сервера
  • 3. Литература • Learn Python The Hard Way - http://learnpythonthehardway.org/ • Django Book - http://www.djangobook.com
  • 4. Основные инструменты • 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/
  • 5. Установка и настройка окружения для команды разработчиков Уставнока python > sudo apt-get install python2.7 или для тех кто хочет идти быть на передовой > sudo apt-get install python3
  • 6. Виртуальное окружение > 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
  • 7. Установка зависимостей > pip install название_пакета // из локальной папки > pip install /путь/до/пакета // из репозитория > pip install git+repo (git+, https+, etc.) //Фиксируем зависимости > pip freeze
  • 9. Создание проекта на Django > pip install django > python django-admin.py startproject carshop > ./manage.py startapp cars
  • 10. 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
  • 11. • Не тестируйте то что уже протестировано • Проверяйте в отдельном тесте одну и только одну функцию • Тесты пишутся для бизнес логики • Модель это не бизнес логика, а её данные > ./manage.py test cars Начинаем с unit-тестов на Django
  • 12. 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
  • 13. Приемочное тестирование Инструмент Lettuce – BDD фреймворк для Python – http://lettuce.it > manage.py harvest Пример Сценарий: Пользователь видит форму банковских реквизитов Допустим пользователь авторизовался в системе И выбрал автомобиль “Bentley” “2013” года выпуска Если нажимат на кнопку “Купить” То видит форму заполнения банковских реквизитов
  • 14. carshop carshop … cars features cars.feature steps.py … manage.py terrain.py Подготовка окружения для запуска тестов Сценарии тестов Описание шагов
  • 17. Установка на сервер Инструмент • Python Fabric - http://fabfile.org/ > fab –H %HOST% update:demo,1.0.1 carshop carshop cars fabfile.py Инструкции установки
  • 19. Выводы • Virtualenv – Установка и работа с окружением • Django – Реализуем нашу идею • Lettuce – Тестируем в браузере • Fabric – Устанавливаем на сервер