Дмитрий Пронин – python для веба

18
Python for WEB with unit and system tests

Upload: yandex

Post on 15-Jun-2015

792 views

Category:

Internet


7 download

DESCRIPTION

В докладе мы рассмотрим на примере работы с RESTful интерфейсом сервиса через Json, как написать автоматизированное тестирование с нуля. Особое внимание уделим настройке системных и юнит-тестов и постановке системы CI.

TRANSCRIPT

Page 1: Дмитрий Пронин – Python для веба

Python for WEBwith unit and system tests

Page 2: Дмитрий Пронин – Python для веба

Используемые технологии

● Python● Flask● JSON● Jenkins CI● *nix ● MongoDB● cURL● PyCharm IDE● AngularJS

Page 3: Дмитрий Пронин – Python для веба

План

● Зачем нужно автоматическое тестирование● Как написать автотесты на Python● Проверка работы всей системы

Page 4: Дмитрий Пронин – Python для веба

Зачем нужно автоматическое тестирование ?

Малый проект

Большой проект

Код проекта

Время тестирования

Page 5: Дмитрий Пронин – Python для веба

Что хотим получить

Product API CI server Unit tests System testscommit

DB DB

Page 6: Дмитрий Пронин – Python для веба

Json

{ "response": { "audio": { "aid": "132924633", "artist": "Simon and Garfunkel", "duration": "189", "lyrics_id": "7396635", "owner_id": "189814", "title": "The Sounds of Silence (original)", "url": "http://cs4376.vkontakte.ru/u3141879/audio/2153ed0466be.mp3" }, "text": "Simon and Garfunkel – The Sounds of Silence (original)" }}

http://vk.com/pages?oid=-1&p=status.get

Page 8: Дмитрий Пронин – Python для веба

Разработка API

/position

● post (lat, lon) - создаем запись ● get (limit=10) - получаем список записей● delete (id) - удаляем одну или весь список записей

{ "_id" : ObjectId("5351349a5c77020f9be5da0f"), "lat" : "56.327358", "long" : "43.985191" }

Page 9: Дмитрий Пронин – Python для веба

Ручное тестирование с cURL

POSTcurl -X POST -H "Content-Type: application/json" -d '{"lat": "56.327358", "lon":"43.985191"}' 127.0.0.1:5000/position

GETcurl -X GET 127.0.0.1:5000/position

curl -X GET 127.0.0.1:5000/position?limit=2

DELETEcurl -X DELETE 127.0.0.1:5000/position

curl -X DELETE 127.0.0.1:5000/position?id=5352f2d95c770219cf11ea13

postman!

Page 10: Дмитрий Пронин – Python для веба

Написание Unit тестов

Page 11: Дмитрий Пронин – Python для веба

Написание System тестов

Page 12: Дмитрий Пронин – Python для веба

Настройка системы непрерывной интеграции

Page 13: Дмитрий Пронин – Python для веба

Просмотр работы тестов

Page 14: Дмитрий Пронин – Python для веба

Верификация работы тестов

Page 15: Дмитрий Пронин – Python для веба

Подготовка данных для работы

Page 16: Дмитрий Пронин – Python для веба

Вопросы?

Page 18: Дмитрий Пронин – Python для веба

Спасибо