1 of 19

nose - testy na sterydach

Przemek Lewandowski

@haxoza

@sunscrapers

2 of 19

Co to jest nose?

http://readthedocs.org/docs/nose/en/latest/

3 of 19

Nose is nicer testing for python

4 of 19

Nose extends unittest to make testing easier

5 of 19

Dlaczego używać nose?

6 of 19

Dlaczego używać nose?

  • oszczędza czas
  • łatwiejsze pisanie testów
  • łatwiejsze uruchamianie testów
  • efektywniejsze przygotowanie testów
  • plugin'owa budowa
    • możliwość tworzenia własnych rozszerzeń
    • wiele gotowych rozszerzeń
  • python 3

7 of 19

Tworzenie testów

  • nie trzeba dziedziczyć po unittest.TestCase
  • asercje z unittest
  • dodatkowe mechanizmy (generatory)
  • możliwość pisania funkcji testujących
  • nazwa testu musi jedynie spełniać wyrażenie regularne

8 of 19

Uruchamianie testów

  • automatyczne wyszukiwanie testów
  • plik konfiguracyjny .noserc (ini style)
  • narzędzie nosetests

9 of 19

Przygotowanie środowiska

Metody setUp() i tearDown() dla:

  • pakietów
  • modułów
  • klas
  • testów

10 of 19

Tworzenie rozszerzeń

  • dziedziczenie po nose.plugins.base.Plugin
  • rejestracja rozszerzenia
    • setuptools
    • test runner

http://readthedocs.org/docs/nose/en/latest/plugins/writing.html

11 of 19

Tworzenie rozszerzeń

12 of 19

Tworzenie rozszerzeń

13 of 19

Wbudowane rozszerzenia

  • id dla testów
    • tworzy plik ".noseids"
    • możliwość uruchamiania testów, które zakończyły się błędem
  • raporty pokrycia kodu
  • wyniki w formacie XUnit
  • uruchomienie pdb w momencie błędu
  • profilowanie za pomocą modułu hotshot
  • zbieranie standardowego wyjścia
  • zbieranie komunikatów z pakietu logging
  • ...

14 of 19

Zewnętrzne rozszerzenia

https://nose-plugins.jottit.com/

  • django-nose
  • nose-xcover
  • nose-progressive
  • NoseGAE
  • NoseJS
  • ...

15 of 19

django-nose

16 of 19

django-nose

  • wszystkie zalety nose
  • łatwa konfiguracja
  • ładowanie fixture'ów per TestCase
    • FastFixtureTestCase
  • selektywne uruchamianie testów
    • standardowo uruchamia tylko testy z projektu
    • składnia jak dla narzędzia nosetests
  • ponowne użycie testowej bazy danych

17 of 19

django-nose

18 of 19

Dziękuję!

19 of 19

Pytania?