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

Introduction à LiveServerTestCase (In French)

Introduction à LiveServerTestCase (In French)

7617093fdae20c6fe4b0f7fe954a8aad?s=128

Julien Phalip

November 24, 2012
Tweet

Transcript

  1. Une introduction à LiveServerTestCase Julien Phalip Odopod @julienphalip DjangoCon Toulouse

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

    Utilise Django depuis 2007 ‣ Core-développeur depuis 2011 ‣ Tweete à @julienphalip
  3. CONNECTED PERSONAL OBJECTS 5/2012 http://odopod.com

  4. CONNECTED PERSONAL OBJECTS 5/2012 Tests: méthode traditionnelle

  5. 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)
  6. CONNECTED PERSONAL OBJECTS 5/2012

  7. CONNECTED PERSONAL OBJECTS 5/2012 django.test.TestCase

  8. CONNECTED PERSONAL OBJECTS 5/2012 django.test.TestCase THREAD DJANGO

  9. CONNECTED PERSONAL OBJECTS 5/2012 django.test.TestCase Code de l’application THREAD DJANGO

  10. CONNECTED PERSONAL OBJECTS 5/2012 django.test.TestCase TestCase Code de l’application THREAD

    DJANGO
  11. CONNECTED PERSONAL OBJECTS 5/2012 django.test.TestCase Base de données TestCase Code

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

    de données TestCase Code de l’application THREAD DJANGO
  13. 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
  14. 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
  15. 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
  16. 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
  17. 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
  18. CONNECTED PERSONAL OBJECTS 5/2012 ... une méthode incomplète

  19. CONNECTED PERSONAL OBJECTS 5/2012 ... une méthode incomplète ‣ Pas

    de “vraies” requêtes http
  20. CONNECTED PERSONAL OBJECTS 5/2012 ... une méthode incomplète ‣ Pas

    de “vraies” requêtes http ‣ Pas de tests d’interface utilisateur
  21. LiveServerTestCase

  22. CONNECTED PERSONAL OBJECTS 5/2012 django.test.LiveServerTestCase

  23. CONNECTED PERSONAL OBJECTS 5/2012 django.test.LiveServerTestCase LiveServerTestCase THREAD DJANGO #1

  24. CONNECTED PERSONAL OBJECTS 5/2012 django.test.LiveServerTestCase LiveServerTestCase Code de l’application THREAD

    DJANGO #2 THREAD DJANGO #1 Serveur http
  25. CONNECTED PERSONAL OBJECTS 5/2012 django.test.LiveServerTestCase “Vrai” client http LiveServerTestCase Code

    de l’application THREAD DJANGO #2 THREAD DJANGO #1 Serveur http
  26. 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
  27. 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
  28. 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
  29. 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
  30. 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
  31. 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
  32. 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
  33. 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
  34. 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
  35. 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
  36. 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
  37. CONNECTED PERSONAL OBJECTS 5/2012 from django.test import LiveServerTestCase from selenium.webdriver.firefox.webdriver

    import WebDriver class SuperTests(LiveServerTestCase): LiveServerTestCase: avec Selenium
  38. 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()
  39. 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()
  40. 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()
  41. CONNECTED PERSONAL OBJECTS 5/2012 DÉMO (Tester l’admin de Django avec

    Selenium)
  42. CONNECTED PERSONAL OBJECTS 5/2012 Autres cas d’utilisation

  43. CONNECTED PERSONAL OBJECTS 5/2012 Autres cas d’utilisation ‣ Tests d’APIs

    REST avec python-requests. (suggéré par Steve Lacy @sklacy)
  44. 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/')
  45. 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': 'john@doe.com'})
  46. 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': 'john@doe.com'}) ‣ Tests d’authentification Facebook ou Twitter, avec Selenium. (suggéré par Samuel Sutch @ssutch)
  47. CONNECTED PERSONAL OBJECTS 5/2012 En conclusion...

  48. CONNECTED PERSONAL OBJECTS 5/2012 En conclusion... ‣ LiveServerTestCase c’est top

    !
  49. CONNECTED PERSONAL OBJECTS 5/2012 En conclusion... ‣ LiveServerTestCase c’est top

    ! ‣ Protocole http complet.
  50. CONNECTED PERSONAL OBJECTS 5/2012 En conclusion... ‣ LiveServerTestCase c’est top

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

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

    ! ‣ Protocole http complet. ‣ Intégration frontend/backend. ‣ fun ! ‣ ... mais à utiliser avec modération
  53. 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.
  54. 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.
  55. Merci ! @julienphalip http:/ /odopod.com http:/ /julienphalip.com à Toulibre, la

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