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] (actual) 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:// | ||