Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.
Ambdós costats versió prèvia Revisió prèvia Següent revisió | Revisió prèvia Ultima revisió Ambdós costats nova versio | ||
python_web_test [2022/11/30 09:18] enric_mieza_sanchez [Pytest amb Selenium] |
python_web_test [2022/12/13 19:11] enric_mieza_sanchez [Python web test amb Pytest] |
||
---|---|---|---|
Línia 1: | Línia 1: | ||
====== Python web test amb Pytest ====== | ====== Python web test amb Pytest ====== | ||
+ | |||
+ | {{ pytest_logo.svg? | ||
Referències: | Referències: | ||
- | * Continua de [[Python Web]] | + | * Continua de [[Python Web]] , cal conèixer Flask |
* Necessitaràs [[Python venv]] | * Necessitaràs [[Python venv]] | ||
Línia 10: | Línia 12: | ||
\\ | \\ | ||
+ | <WRAP important> | ||
+ | Per poder seguir els exemples d' | ||
+ | </ | ||
===== Pytest + client de tests de Flask ===== | ===== Pytest + client de tests de Flask ===== | ||
- | Anem a veure com podem testejar les nostres aplicacions fetes amb Flask. | + | En aquesta primera aproximació **testejarem la webapp |
Fem-li un cop d'ull a la [[https:// | Fem-li un cop d'ull a la [[https:// | ||
Línia 63: | Línia 68: | ||
(env) $ pip install pytest-selenium | (env) $ pip install pytest-selenium | ||
- | Podeu llegir la [[https://pytest-selenium.readthedocs.io/ | + | I també el driver per a automatitzar el Firefox: |
+ | $ sudo apt install firefox-geckodriver | ||
+ | Documentacions importants: | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | Posem aquí un test doble fonamental: | ||
+ | * A la //home page// comprovem que el text que apareix contingui " | ||
+ | * Al formulari d' | ||
+ | |||
+ | <file python test_web.py> | ||
+ | import pytest | ||
+ | from selenium.webdriver.common.by import By | ||
+ | |||
+ | def test_home(selenium): | ||
+ | selenium.get(' | ||
+ | # podem examinar el què ens retorna el browser a " | ||
+ | assert " | ||
+ | |||
+ | |||
+ | def test_form(selenium): | ||
+ | # carreguem la pàgina del formulari | ||
+ | selenium.get(' | ||
+ | |||
+ | # busquem el quadre de text i hi escrivim un nom | ||
+ | elem = selenium.find_element(By.TAG_NAME," | ||
+ | elem.send_keys(" | ||
+ | |||
+ | # cerquem el botó de submit i el cliquem | ||
+ | submit = selenium.find_element(By.XPATH,"// | ||
+ | submit.click() | ||
+ | |||
+ | # comprovem que el missatge de salutació contingui | ||
+ | # el nom introduit prèviament al formulari | ||
+ | assert " | ||
+ | </ | ||
+ | |||
+ | Per posar en marxa el test ens caldrà 2 shells. En la 1a, posem en marxa la app: | ||
+ | (env) $ flask --app web run | ||
+ | |||
+ | I a la 2a shell engeguem els tests: | ||
+ | (env) $ pytest --driver Firefox | ||
+ | |||
+ | <WRAP info> | ||
+ | Fixa't en què per trobar elements fem servir '' | ||
+ | |||
+ | Pots trobar més info de com localitzar elements a la **doc oficial de Selenium per Python**: | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | </ | ||
+ | |||
+ | \\ | ||
===== Exercici : login ===== | ===== Exercici : login ===== |