Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Introduction à LiveServerTestCase (In French)

Introduction à LiveServerTestCase (In French)

Julien Phalip

November 24, 2012
Tweet

More Decks by Julien Phalip

Other Decks in Programming

Transcript

  1. CONNECTED PERSONAL OBJECTS 5/2012 C’est qui lui? ‣ Globetrotter ‣

    Utilise Django depuis 2007 ‣ Core-développeur depuis 2011 ‣ Tweete à @julienphalip
  2. CONNECTED PERSONAL OBJECTS 5/2012 Tests: méthode traditionnelle from django.test import

    TestCase class SuperTests(TestCase): def test_bonjour(self): r = self.client.get('/bonjour') self.assertTrue('Bonjour' in r.content)
  3. CONNECTED PERSONAL OBJECTS 5/2012 django.test.TestCase “Faux” client http (self.client) Base

    de données TestCase Code de l’application MockRequest THREAD DJANGO
  4. CONNECTED PERSONAL OBJECTS 5/2012 django.test.TestCase “Faux” client http (self.client) Base

    de données TestCase Code de l’application MockRequest THREAD DJANGO
  5. CONNECTED PERSONAL OBJECTS 5/2012 django.test.TestCase “Faux” client http (self.client) Base

    de données TestCase Code de l’application MockRequest HttpResponse THREAD DJANGO
  6. CONNECTED PERSONAL OBJECTS 5/2012 django.test.TestCase “Faux” client http (self.client) Base

    de données TestCase Code de l’application MockRequest HttpResponse THREAD DJANGO
  7. CONNECTED PERSONAL OBJECTS 5/2012 django.test.TestCase “Faux” client http (self.client) Base

    de données TestCase Code de l’application MockRequest HttpResponse THREAD DJANGO
  8. CONNECTED PERSONAL OBJECTS 5/2012 ... une méthode incomplète ‣ Pas

    de “vraies” requêtes http ‣ Pas de tests d’interface utilisateur
  9. CONNECTED PERSONAL OBJECTS 5/2012 django.test.LiveServerTestCase “Vrai” client http Base de

    données LiveServerTestCase Code de l’application THREAD DJANGO #2 THREAD DJANGO #1 Serveur http
  10. CONNECTED PERSONAL OBJECTS 5/2012 django.test.LiveServerTestCase “Vrai” client http Base de

    données LiveServerTestCase Code de l’application THREAD DJANGO #2 THREAD DJANGO #1 Serveur http
  11. CONNECTED PERSONAL OBJECTS 5/2012 django.test.LiveServerTestCase “Vrai” client http Base de

    données LiveServerTestCase http Code de l’application THREAD DJANGO #2 THREAD DJANGO #1 Serveur http
  12. CONNECTED PERSONAL OBJECTS 5/2012 django.test.LiveServerTestCase “Vrai” client http Base de

    données LiveServerTestCase http Code de l’application THREAD DJANGO #2 THREAD DJANGO #1 Serveur http wsgi
  13. CONNECTED PERSONAL OBJECTS 5/2012 django.test.LiveServerTestCase “Vrai” client http Base de

    données LiveServerTestCase http Code de l’application THREAD DJANGO #2 THREAD DJANGO #1 Serveur http wsgi
  14. CONNECTED PERSONAL OBJECTS 5/2012 django.test.LiveServerTestCase “Vrai” client http Base de

    données LiveServerTestCase http Code de l’application THREAD DJANGO #2 THREAD DJANGO #1 Serveur http wsgi
  15. CONNECTED PERSONAL OBJECTS 5/2012 django.test.LiveServerTestCase “Vrai” client http Base de

    données LiveServerTestCase http Code de l’application THREAD DJANGO #2 THREAD DJANGO #1 Serveur http wsgi
  16. CONNECTED PERSONAL OBJECTS 5/2012 django.test.LiveServerTestCase “Vrai” client http Base de

    données LiveServerTestCase http Code de l’application THREAD DJANGO #2 THREAD DJANGO #1 Serveur http wsgi
  17. CONNECTED PERSONAL OBJECTS 5/2012 django.test.LiveServerTestCase “Vrai” client http Base de

    données LiveServerTestCase http Code de l’application THREAD DJANGO #2 THREAD DJANGO #1 Serveur http wsgi
  18. CONNECTED PERSONAL OBJECTS 5/2012 django.test.LiveServerTestCase Base de données LiveServerTestCase http

    python-requests Code de l’application THREAD DJANGO #2 THREAD DJANGO #1 Serveur http wsgi
  19. CONNECTED PERSONAL OBJECTS 5/2012 + ou ou django.test.LiveServerTestCase Base de

    données LiveServerTestCase http Code de l’application THREAD DJANGO #2 THREAD DJANGO #1 Serveur http wsgi
  20. CONNECTED PERSONAL OBJECTS 5/2012 from django.test import LiveServerTestCase from selenium.webdriver.firefox.webdriver

    import WebDriver class SuperTests(LiveServerTestCase): LiveServerTestCase: avec Selenium
  21. CONNECTED PERSONAL OBJECTS 5/2012 from django.test import LiveServerTestCase from selenium.webdriver.firefox.webdriver

    import WebDriver class SuperTests(LiveServerTestCase): LiveServerTestCase: avec Selenium @classmethod def setUpClass(cls): cls.selenium = WebDriver() super(MySeleniumTests, cls).setUpClass() @classmethod def tearDownClass(cls): cls.selenium.quit() super(MySeleniumTests, cls).tearDownClass()
  22. CONNECTED PERSONAL OBJECTS 5/2012 from django.test import LiveServerTestCase from selenium.webdriver.firefox.webdriver

    import WebDriver class SuperTests(LiveServerTestCase): LiveServerTestCase: avec Selenium @classmethod def setUpClass(cls): cls.selenium = WebDriver() super(MySeleniumTests, cls).setUpClass() @classmethod def tearDownClass(cls): cls.selenium.quit() super(MySeleniumTests, cls).tearDownClass()
  23. CONNECTED PERSONAL OBJECTS 5/2012 LiveServerTestCase: avec Selenium from django.test import

    LiveServerTestCase from selenium.webdriver.firefox.webdriver import WebDriver class SuperTests(LiveServerTestCase): ... def test_bonjour(self): self.selenium.get(self.live_server_url + '/bonjour') self.selenium.find_element_by_id('btn-ok').click()
  24. CONNECTED PERSONAL OBJECTS 5/2012 Autres cas d’utilisation ‣ Tests d’APIs

    REST avec python-requests. (suggéré par Steve Lacy @sklacy)
  25. CONNECTED PERSONAL OBJECTS 5/2012 Autres cas d’utilisation ‣ Tests d’APIs

    REST avec python-requests. (suggéré par Steve Lacy @sklacy) ‣ r = requests.get(self.live_server_url + '/api/user/1/')
  26. CONNECTED PERSONAL OBJECTS 5/2012 Autres cas d’utilisation ‣ Tests d’APIs

    REST avec python-requests. (suggéré par Steve Lacy @sklacy) ‣ r = requests.get(self.live_server_url + '/api/user/1/') ‣ self.assertEqual(r.json, {u'username': u'john.doe', u'email': '[email protected]'})
  27. CONNECTED PERSONAL OBJECTS 5/2012 Autres cas d’utilisation ‣ Tests d’APIs

    REST avec python-requests. (suggéré par Steve Lacy @sklacy) ‣ r = requests.get(self.live_server_url + '/api/user/1/') ‣ self.assertEqual(r.json, {u'username': u'john.doe', u'email': '[email protected]'}) ‣ Tests d’authentification Facebook ou Twitter, avec Selenium. (suggéré par Samuel Sutch @ssutch)
  28. CONNECTED PERSONAL OBJECTS 5/2012 En conclusion... ‣ LiveServerTestCase c’est top

    ! ‣ Protocole http complet. ‣ Intégration frontend/backend.
  29. CONNECTED PERSONAL OBJECTS 5/2012 En conclusion... ‣ LiveServerTestCase c’est top

    ! ‣ Protocole http complet. ‣ Intégration frontend/backend. ‣ fun !
  30. CONNECTED PERSONAL OBJECTS 5/2012 En conclusion... ‣ LiveServerTestCase c’est top

    ! ‣ Protocole http complet. ‣ Intégration frontend/backend. ‣ fun ! ‣ ... mais à utiliser avec modération
  31. CONNECTED PERSONAL OBJECTS 5/2012 En conclusion... ‣ LiveServerTestCase c’est top

    ! ‣ Protocole http complet. ‣ Intégration frontend/backend. ‣ fun ! ‣ ... mais à utiliser avec modération ‣ Plus lent, surtout avec Selenium.
  32. CONNECTED PERSONAL OBJECTS 5/2012 En conclusion... ‣ LiveServerTestCase c’est top

    ! ‣ Protocole http complet. ‣ Intégration frontend/backend. ‣ fun ! ‣ ... mais à utiliser avec modération ‣ Plus lent, surtout avec Selenium. ‣ À utiliser pour les fonctionnalités critiques et pour augmenter la couverture des tests.
  33. Merci ! @julienphalip http:/ /odopod.com http:/ /julienphalip.com à Toulibre, la

    Django Software Foundation et tous les organisateurs et participants de DjangoCon Toulouse.