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 [2022/11/29 19:12] enric_mieza_sanchez [Creant el primer projecte] |
python_web [2022/12/13 18:43] (actual) enric_mieza_sanchez [Testing] |
||
---|---|---|---|
Línia 11: | Línia 11: | ||
- **Bottle** : microframework | - **Bottle** : microframework | ||
+ | Referències: | ||
+ | * Per desenvolupar en Python necessitarem [[Python venv]] | ||
+ | * L' | ||
+ | |||
+ | {{tag> #Daw #DawMpDual #DawMp07Uf1 # | ||
+ | |||
+ | |||
+ | \\ | ||
+ | |||
+ | ===== Videotutorials ===== | ||
Aquest article també el tens en [[https:// | Aquest article també el tens en [[https:// | ||
Línia 17: | Línia 27: | ||
{{youtube> | {{youtube> | ||
- | + | \\ | |
- | {{tag> #Daw #DawMpDual #DawMp07Uf1 # | + | |
===== Instal·lació ===== | ===== Instal·lació ===== | ||
Línia 58: | Línia 67: | ||
Podeu visitar la web //Hello World// apuntant el vostre navegador a '' | Podeu visitar la web //Hello World// apuntant el vostre navegador a '' | ||
+ | |||
+ | \\ | ||
===== Avançant amb Flask ===== | ===== Avançant amb Flask ===== | ||
- | ==== Aplicació mínima ==== | ||
- | Com podeu veure al [[https:// | ||
- | |||
- | Li hem afegit una línia més per arrencar l' | ||
- | <file python web.py> | ||
- | from flask import Flask | ||
- | app = Flask(__name__) | ||
- | |||
- | @app.route('/' | ||
- | def hello_world(): | ||
- | return ' | ||
- | |||
- | # arranquem l' | ||
- | if __name__ == " | ||
- | app.run(debug=True) | ||
- | </ | ||
- | |||
- | Arrencant amb '' | ||
- | (env) $ python web.py | ||
- | |||
- | I mirar el resultat apuntant el //browser// a: | ||
- | http:// | ||
==== Routing ==== | ==== Routing ==== | ||
Línia 89: | Línia 78: | ||
<file python web.py> | <file python web.py> | ||
+ | #... codi previ... | ||
+ | |||
@app.route('/ | @app.route('/ | ||
def hello(): | def hello(): | ||
return 'Hello again!' | return 'Hello again!' | ||
+ | |||
+ | #...mes codi... | ||
</ | </ | ||
Línia 133: | Línia 126: | ||
</ | </ | ||
- | ==== Variables globals (shhht! q no ho senti ningú!) ==== | + | \\ |
- | En un entorn web no és recomanable utilitzar variables globals. O més aviat, no podem utilitzar-les com solem fer-ho en les aplicacions | + | |
+ | ===== Variables globals (shhht! q no ho senti ningú!) | ||
+ | En un entorn web no és recomanable utilitzar variables globals. O més aviat, no podem utilitzar-les com solem fer-ho en aplicacions | ||
De fet, sí que es poden fer servir, però no es pot confiar en què en la següent execució la variable global es mantingui. El servidor web, depenent de la seva càrrega, pot destruir el procés d' | De fet, sí que es poden fer servir, però no es pot confiar en què en la següent execució la variable global es mantingui. El servidor web, depenent de la seva càrrega, pot destruir el procés d' | ||
Línia 254: | Línia 249: | ||
* [[https:// | * [[https:// | ||
* [[https:// | * [[https:// | ||
- | |||
- | |||
- | |||
\\ | \\ | ||
- | ===== Testing | + | ===== Per a saber-ne més ===== |
- | Anem a veure com podem testejar | + | Hem fet un repàs de les funcions bàsiques del // |
- | Fem-li un cop d'ull a la [[https:// | + | * Persistència en base de dades |
+ | * Sessions | ||
- | Primera cosa que cal fer, instal·lar el mòdul de tests '' | ||
- | (env) $ pip install pytest | ||
- | Després, ens diuen que fem un **test skeleton**, però l' | + | També hi ha aquest cursos |
+ | | ||
+ | * [[https://platzi.com/cursos/flask/ | ||
- | Nosaltres implementarem una versió simplificada sobre l' | + | \\ |
- | <file python test_web.py > | ||
- | import pytest | ||
- | from web import | + | ===== Exercici : login ===== |
+ | <WRAP todo> | ||
+ | Pàgina de login de l'app: | ||
- | @pytest.fixture | ||
- | def client(): | ||
- | with app.test_client() as client: | ||
- | yield client | ||
- | |||
- | def test_landing_page(client): | ||
- | rv = client.get('/' | ||
- | assert b' | ||
- | </ | ||
- | |||
- | Correm els tests amb la comanda '' | ||
- | < | ||
- | (env) $ pytest | ||
- | ============================ test session starts ============================= | ||
- | platform linux -- Python 3.8.10, pytest-6.2.5, | ||
- | rootdir: / | ||
- | collected 1 item | ||
- | |||
- | test_web.py . [100%] | ||
- | |||
- | ============================= 1 passed in 0.09s ============================== | ||
- | </ | ||
- | |||
- | **Com podem veure, '' | ||
- | |||
- | ==== Exercici ==== | ||
- | <WRAP todo> | ||
- | Examina [[https:// | ||
* Crea un formulari que demani usuari i contrasenya. El formulari s' | * Crea un formulari que demani usuari i contrasenya. El formulari s' | ||
* Crea una pàgina (per POST) que respongui al formulari d' | * Crea una pàgina (per POST) que respongui al formulari d' | ||
* Assegura' | * Assegura' | ||
* **Comprova manualment el punt anterior. Abans de fer els tests automàtics cal fer-los manuals PER A TOTS ELS CASOS** (tant si funciona OK, com si dona error). | * **Comprova manualment el punt anterior. Abans de fer els tests automàtics cal fer-los manuals PER A TOTS ELS CASOS** (tant si funciona OK, com si dona error). | ||
- | * Afegeix dues funcions de test que comprovin el següent: | ||
- | - Que els usuaris i contrasenyes que has // | ||
- | - Que una combinació usuari/ | ||
</ | </ | ||
\\ | \\ | ||
- | ===== Per a saber-ne més ===== | + | ===== Testing i + ===== |
- | Hem fet un repàs de les funcions bàsiques del // | + | |
- | * Persistència en base de dades | + | Aquest article continua a [[Python Web Test]] i a [[Docker |
- | * Sessions | + | |
- | + | ||
- | + | ||
- | També hi ha aquest cursos que poden ser interessants: | + | |
- | * [[https:// | + | |
- | * [[https:// | + | |
\\ | \\ | ||