TDD w Django South Sorl Haystack + Whoosh Małe, a cieszy Deployment Koniec. Wspomagacze Django. Jan Filipowski. 25 maja 2010



Podobne dokumenty
Kurs rozszerzony języka Python

Aplikacje WWW. Krzysztof Ciebiera. 3 kwietnia 2014

Testowanie aplikacji. Kurs języka Ruby

Programowanie w Ruby

Django : praktyczne tworzenie aplikacji sieciowych / Antonio Mele. Gliwice, cop Spis treści

Testy aplikacji webowych

Automatyzacja testowania oprogramowania. Automatyzacja testowania oprogramowania 1/36

Dokumentacja. Realizacja w portalu kalkulatora simple. (dane wprowadzane z klawiatury).

WICKET VS. DJANGO. Leszek Gawron vs. Michał Leszczyński

Laboratorium Kierunki Rozwoju oprogramowania REST, Django

Programowanie w Ruby

Zaawansowany kurs języka Python

Przewodnik użytkownika (instrukcja) AutoMagicTest

Informatyzacja Przedsiębiorstw

Budowa aplikacji webowej w oparciu o Maven2 oraz przykłady testów jednostkowych. Wykonał Marcin Gadamer

Informatyzacja Przedsiębiorstw

Programowanie zespołowe

Full Stack JavaScript z Angular i Nest. Dni: 5. Opis: Adresaci szkolenia

Jak okiełznać frontend w Django? Piotr Maliński

Automatyzacja testów aplikacji webowych w Selenium podstawy. Natalia Krawczyk

Ruby i Ruby on Rails. Mateusz Drożdżyński

Programowanie w Sieci Internet Python - c. d. Kraków, 28 listopada 2014 r. mgr Piotr Rytko Wydział Matematyki i Informatyki

Chatter Aplikacja internetowa

Wordpress. Wstęp do tworzenia pluginów. Piotr Wasilewski wasilewski.piotrek (at) gmail.com

Program szkolenia: REST i Microservices w PHP

Kurs rozszerzony języka Python

Edytor Edit+ - dodawanie zdjęć i. załączników. Instrukcja użytkownika

Karty pracy. Ustawienia. W tym rozdziale została opisana konfiguracja modułu CRM Karty pracy oraz widoki i funkcje w nim dostępne.

Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC

Testowanie aplikacji Java Servlets

Zrąb JavascriptMVC. Krzysztof Płocharz. 6 kwiecień Uniwersytet Warszawski

Techniki efektywnego testowania kodu dla programistów Java (Spock

Jak szybko wystawić fakturę w LeftHand? Instalacja programu

Moduł rozliczeń w WinUcz (od wersji 18.40)

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Snifery wbudowane w Microsoft Windows

Testowanie. Ryszard Beczek & Piotr Miłkowski 1 04/11/07

Baza danych sql. 1. Wprowadzenie

SPINACZ.edu.pl platforma współpracy nauki z biznesem w zakresie innowacyjnych rozwiązań informatycznych

Zalogowanie generuje nowe menu: okno do wysyłania plików oraz dodatkowe menu Pomoc

Podręcznik Integracji

Podstawy technologii WWW

Przewodnik użytkownika (instrukcja) AutoMagicTest

JUnit TESTY JEDNOSTKOWE. Waldemar Korłub. Platformy Technologiczne KASK ETI Politechnika Gdańska

REJESTRACJA NOWEJ DRUKARNI W SYSTEMIE PRINTING-CENTER

Internetowa ogólnopolska baza informatycznych projektów badawczych otwartej innowacji Platforma współpracy SPINACZ 1/46

Kurs rozszerzony języka Python

Praktyki i staże. System do rejestrowania praktyk I staży studenckich. 4 rodzaje użytkowników: admin (superadministrator) koordynator opiekun student

ELM SYSTEM ZARZĄDZANIA CYKLEM ŻYCIA SPRZĘTU

Instrukcja konfigurowania poczty Exchange dla klienta pocztowego użytkowanego poza siecią uczelnianą SGH.

Instrukcja rejestracji w systemie System Wspierający Prowadzenie Prac Badawczo-Naukowych oraz Współdzielenie i Publikację Wyników Prac

Instrukcja instalacji

Programowanie Komponentowe WebAPI

Czysta architektura (nawet z Django!) Sebas an PyWaw 72

ibok Internetowe Biuro Obsługi Klienta

Programowanie i projektowanie obiektowe

Aplikacja npodpis do obsługi certyfikatu

Wprowadzenie do testów jednostkowych. Marcin Dziedzic, Wiktor Żołnowski

ELEKTRONICZNA KSIĄŻKA ZDARZEŃ

EPI: Interfejs Graficzny Wykład nr 4 Podstawy frameworku Rails

Rejestracja faktury VAT. Instrukcja stanowiskowa

Aplikacje WWW - laboratorium

Instrukcja zarządzania kontami i prawami. użytkowników w systemie express V. 5

autor poradnika - KS Jak zamieszczać i edytować artykuły na szkolnej stronie internetowej

Aplikacje WWW - lab 5

Laboratorium Technologii Informacyjnych. Projektowanie Baz Danych

I. Logowanie do panelu admina

SimplySign logowanie i rejestracja na komputerze oraz dodanie certyfikatu do programu Płatnik

JAX-RS czyli REST w Javie. Adam Kędziora

learningpanel - logowanie

Przewodnik użytkownika (instrukcja) AutoMagicTest Spis treści

Pomoc dla systemu WordPress

Aplikacja npodpis do obsługi certyfikatu

Pomoc systemu poczty elektronicznej Wydziału Humanistycznego Uniwersytetu Szczecińskiego. Wersja: 1.12

Przewodnik dla klienta

Moduł rozliczeń w WinSkład (od wersji 18.40)

Zawartość. Wstęp. Moduł Rozbiórki. Wstęp Instalacja Konfiguracja Uruchomienie i praca z raportem... 6

Nowy szablon stron pracowników ZUT

Microsoft.NET: ASP.NET MVC + Entity Framework (Code First)

NOWY SZABLON IMPORTU PLIKÓW

Kilometrówki24.pl to system służący do ewidencjonowania przejazdów pojazdów wykorzystywanych w przedsiębiorstwach.

Języki programowania wysokiego poziomu. Ćwiczenia

Aplikacja npodpis do obsługi certyfikatu

Aplikacje mobilne. Pliki zasobów, grafiki, menu, podpinanie zdarzeń. dr Tomasz Jach Instytut Informatyki, Uniwersytet Śląski

INSTRUKCJA OBSŁUGI PLATFORMY EDUSCIENCE Administrator/Administratorka szkoły. platforma.eduscience.pl

EXSO-CORE - specyfikacja

Słowa kluczowe jak góry lodowe

Płatny dostęp do treści przez system płatności PayU na WordPressie [TUTORIAL]

Przetwarzanie danych w chmurze

I. Program II. Opis głównych funkcji programu... 19

Jednolity Plik Kontrolny dla ewidencji zakupu i sprzedaży VAT wg wersji 17 deklaracji VAT-7

Kurs ASP.NET ASP.NET CORE APLIKACJE WEBOWE

Program szkolenia: Test Driven Development (TDD) using Spock or JUnit 5

Poczta elektroniczna ( ) służy do przesyłania i odbierania listów elektronicznych np.: wiadomości tekstowych, multimedialnych itp.

Transkrypt:

25 maja 2010

TDD przypomnienie testy są fajne testujemy co tylko się da cykl: test code refactor dwa frameworki - unittest i doctest

Asercje assertequal assertraises asserttrue assertalmostequal itd.

Co testować w Django? modele widoki

Testowanie modeli c l a s s P o s t S t r T e s t ( TestCase ) : d e f setup ( s e l f ) : s e l f. p o s t = Post ( ) d e f t e s t W i t h T i t l e ( s e l f ) : s e l f. p o s t. t i t l e = kaka s e l f. a s s e r t E q u a l ( s t r ( s e l f. p o s t ), Post : kaka ) d e f t e s t W i t h o u t T i t l e ( s e l f ) : s e l f. a s s e r t E q u a l ( s t r ( s e l f. p o s t ), Post : u n t i t l e d ) Listing 1: blog/tests.py

Odpalamy maszynerię $ python manage. py t e s t b l o g i oczywiście zaliczamy faila. Po implementacji str asercje przechodzą.

Testowanie widoków c l a s s ViewIndexTest ( TestCase ) : d e f setup ( s e l f ) : s e l f. c l i e n t = C l i e n t ( ) # + post1, post2 d e f t e s t T e m p l a t e ( s e l f ) : r e s p o n s e = s e l f. c l i e n t. get ( / b l o g / ) s e l f. a s s e r t T e m p l a t e U s e d ( r e s p o n s e, b l o g / i n d e x. html ) d e f t e s t P o s t L i s t ( s e l f ) : r e s p o n s e = s e l f. c l i e n t. get ( / b l o g / ) s e l f. a s s e r t E q u a l ( l e n ( r e s p o n s e. c o n t e x t [ p o s t s ] ), 2)

Test Client udaje przeglądarkę ma dostęp do kontekstu ma dostęp do templatu ma dostęp do nagłówków HTTP (zarówno request jak i response) umie się zalogować (django.contrib.auth)

Django asercje assertcontains assertformerror asserttemplateused assertredirects

Testy integracyjne? nieizolowane testy widoków (gdy strona bez JS) Selenium

Warto poznać Sane biblioteka dla testów jednostkowych i integracyjnych banana DSL do pisania testów

Migracje Problem Polecenie syncdb działa tylko raz po utworzeniu modelu. My chcemy być elastyczni i zmieniać schemat bazy danych częściej niż co model. Rozwiązanie Migracje

Standardowe użycie tworzymy aplikację, jej modele i dorzucamy south do appek tworzymy migrację inicjującą: $ python manage. py schemamigration appname i n i t dodajemy pola do modeli tworzymy migrację automatycznie: $ python manage. py schemamigration appname auto migrujemy $ python manage. py m i g r a t e

Ficzery automatycznie generowane migracje niezależne od RDBMS niezależne na poziomie aplikacji odporne na VCS

Thumbnailowanie Problem Uploadujemy obrazki i chcemy mieć ich wersje w różnych rozmiarach. Rozwiązanie sorl-thumbnail

Przykład użycia 1. dodajemy sorl do appek 2. pole image to uploadowany obrazek w modelu 3. dodajemy do templatu: {% l o a d thumbnail %} 4. by wyświetlić obrazek: {% thumbnail o b j. image 250 x250 a u t o c r o p %}

Ficzery cachowanie wbudowane różne filtry można pisać własne filtry chyży

Problem Potrzebujemy wyszukiwarki. Rozwiązanie, Solr albo Xapian. My wybieramy Whoosh.

Przykład użycia cz. 1 dodajemy haystack do appek ustawiamy HAYSTACK SITECONF oraz HAYSTACK SEARCH ENGINE ustawiamy HAYSTACK WHOOSH PATH definiujemy search indexes.py import h a y s t a c k h a y s t a c k. a u t o d i s c o v e r ( )

Przykład użycia cz. 2 Definiujemy search indexes.py dla appki c l a s s P o s t I n d e x ( S e a r c h I n d e x ) : c o n t e n t = C h a r F i e l d ( document=true ) a u t h o r = C h a r F i e l d ( m o d e l a t t r= u s e r ) d e f g e t q u e r y s e t ( s e l f ) : r e t u r n Post. o b j e c t s. a l l ( ) I odpowiedni template do wyszukiwarki w search/search.html

Ficzery wsparcie dla Solr, Xapian i Whoosh możliwość podświetlania znalezionych fraz podobne

Chunks Idea Edytowalne małe fragmenty strony, zarządzane z poziomu admina. Użycie W templacie: {% l o a d chunks %} {% chunk dada %}

Registration Idea Rejestracja i autoryzacja użytkowników na stronie (bez użycia django admin). Użycie dodaj registration do appek syncdb dodaj do urls.py ( r ˆ a c c o u n t s /, i n c l u d e ( r e g i s t r a t i o n. backends. d e f a u l t. u r l s ) ), zdefiniuj templaty

Tagging Idea Tagowanie bytów na stronie. Użycie cz. 1 dodaj tagging do appek syncdb zarejestruj modele w tagging t a g g i n g. r e g i s t e r ( Post )

Tagging Użycie cz. 2 przypisz tagi >>> p o s t. t a g s = kaka, dudu, l a l a >>> p o s t. t a g s [<Tag : kaka >, <Tag : dudu >, <Tag : l a l a >] wypisz obiekty modelu z tagiem >>> TaggedItem. o b j e c t s. g e t b y m o d e l ( Post, kaka ) można wypisać powiązane (tagami) obiekty dostępne templatetagi wspomagające

Problem Ręczny deploy jest strasznie nudny i czasochłonny. Rozwiązanie Fabric albo Capistrano (albo masa innych).

Fabric ficzery działanie na wielu hostach automatyczne wywoływanie komend shellowych dostęp do sudo

Fabric podstawy run() local() sudo() put() get() prompt()

south.aeracode.org code.google.com/p/sorl-thumbnail haystacksearch.org github.com/clintecker/django-chunks www.bitbucket.org/ubernostrum/django-registration code.google.com/p/django-tagging docs.fabfile.org

Dziękuję za uwagę!