Selaa lähdekoodia

5.5 sur tests et écriture FT de base

Benoît Hubert 7 vuotta sitten
vanhempi
commit
4093cec5b6

+ 33 - 0
examples/mini-serveur-ft.py

@@ -0,0 +1,33 @@
+from selenium import webdriver
+
+browser = webdriver.Firefox()
+
+# Edith has heard about a cool new online to-do app. She goes
+# to check out its homepage
+browser.get('http://localhost:8081')
+
+# She notices the page title and header mention to-do lists
+assert 'Mini-Serveur' in browser.title
+
+# She is invited to enter a to-do item straight away
+
+# She types "Buy peacock feathers" into a text box (Edith's hobby
+# is tying fly-fishing lures)
+
+# When she hits enter, the page updates, and now the page lists
+# "1: Buy peacock feathers" as an item in a to-do list
+
+# There is still a text box inviting her to add another item. She
+# enters "Use peacock feathers to make a fly" (Edith is very methodical)
+
+# The page updates again, and now shows both items on her list
+
+# Edith wonders whether the site will remember her list. Then she sees
+# that the site has generated a unique URL for her -- there is some
+# explanatory text to that effect.
+
+# She visits that URL - her to-do list is still there.
+
+# Satisfied, she goes back to sleep
+
+browser.quit()

+ 48 - 0
react-tuto/src/markdown/5. Mini-serveur web/05. Et les tests dans tout ça.md

@@ -0,0 +1,48 @@
+En voyant le titre de cette page, tu te rappelles sûrement qu'avant de s'embarquer dans cette exploration de HTTP, on parlait de Python et de TDD !
+
+Peut-être ne vois-tu pas encore le rapport entre notre travail préparatoire sur le TDD, et ces nouvelles infos sur HTTP.
+
+Alors voici un rappel du plan :
+
+- Apprendre un minimum sur Python et le TDD : *fait*.
+- Comprendre le fonctionnement de HTTP et d'un serveur web : *en cours*.
+- Ajouter des fonctionnalités à ce mini-serveur web : *en cours*, du moins l'intention, à la page précédente, était d'ajouter la possibilité de gérer les requêtes POST !
+
+<img src="https://media.giphy.com/media/WL950i62D3HQA/giphy.gif" alt="kata" style="float: left; padding: 0 25px 25px 0;" />
+
+Le fait que j'allais me lancer tête baissée dans le handler POST est significatif : maintenir la *discipline* du TDD est difficile, au début, et même quand on a déjà l'habitude d'écrire des tests.
+
+On est souvent pressé d'ajouter des fonctionnalités à tout prix. Et c'est mal ! C'est pourquoi j'insiste sur l'importance de prendre de bonnes habitudes dès maintenant.
+
+Les experts en TDD comparent son apprentissage à la pratique des katas en arts martiaux : des mouvements qui sont au début peu naturels, mais qu'à force de répéter, on assimile.
+
+<div style="clear:both;"></div>
+
+##### Donc, retour aux tests
+
+Nous avons terminé la section précédente, "Bases de Python", avec un exercice de TDD. Nous avons écrit la fonction `est_bissextile()` en écrivant d'abord des tests.
+
+Ce type de test que nous avons écrit est appelé **test unitaire**. Ce sont des tests qui permettent de vérifier le fonctionnement d'un composant précis de l'application que l'on construit. Si jamais on change l'implémentation, le test doit toujours passer, sinon on a cassé quelque chose, et on parle de *régression*.
+
+Un autre type de test est le **test fonctionnel** ou **test d'intégration**. Il sert à tester l'application avec une vue d'ensemble, plus globale que les tests unitaires. En fait, le test fonctionnel vise à simuler l'interaction d'un véritable utilisateur avec l'application.
+
+C'est là que va intervenir Selenium : il permet de contrôler un navigateur (ici Firefox) via geckodriver qu'on a téléchargé au début.
+
+Avant d'aller plus loin et d'ajouter d'autres choses à notre mini-serveur, on va écrire un test dans lequel on va décrire ce qu'on voudrait que notre page web affiche, et comment on voudrait pouvoir interagir avec.
+
+Commençons par faire simple :
+
+```python
+from selenium import webdriver
+
+# Instance de Firefox contrôlée par webdriver
+browser = webdriver.Firefox()
+
+# On pointe ce browser vers l'URL de notre mini-serveur
+browser.get('http://localhost:8081')
+
+# En toute logique, on voudrait que le HTML généré par notre serveur ait un titre
+assert 'Mini-Serveur' in browser.title
+
+browser.quit()
+```

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 1
react-tuto/src/resources/markdown.json