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 | ||
python_web_test [2022/11/30 09:54] enric_mieza_sanchez [Pytest amb Selenium] |
python_web_test [2022/12/13 19:16] enric_mieza_sanchez [Exercici : login] |
||
---|---|---|---|
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 | ||
- | El primer | + | Documentacions importants: |
+ | * [[https://pytest-selenium.readthedocs.io/en/latest/ | ||
+ | * [[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> | <file python test_web.py> | ||
import pytest | 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() | ||
- | def test_example(selenium): | + | # comprovem que el missatge de salutació contingui |
- | | + | |
- | assert "Hello World" in data | + | assert "Salut, manolo" in selenium.page_source |
</ | </ | ||
+ | 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:// | ||
+ | </ | ||
\\ | \\ | ||
Línia 99: | Línia 142: | ||
\\ | \\ | ||
+ | |||
+ | ===== Per saber més ===== | ||
+ | En [[https:// | ||