bytes.cat

La wiki d'FP d'informàtica

Eines de l'usuari

Eines del lloc


python_web

Diferències

Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.

Enllaç a la visualització de la comparació

Ambdós costats versió prèvia Revisió prèvia
Següent revisió
Revisió prèvia
python_web [2022/11/29 19:18]
enric_mieza_sanchez [Variables globals (shhht! q no ho senti ningú!)]
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'article segueix a [[Python Web Test]]
 +
 +{{tag> #Daw #DawMpDual #DawMp07Uf1 #DawMp07Uf02 #DawMp07Uf03 #DawMp07Uf04 #DawMp07Uf1 #DawMp07Uf02 #DawMp07Uf03 #DawMp07Uf04 #Ciber #CiberMp03 #Ceti #CetiMp03 python web flask }}
 +
 +
 +\\
 +
 +===== Videotutorials =====
 Aquest article també el tens en [[https://www.youtube.com/watch?v=bHg1b0XcU3g|dues parts en format vídeotutorial a Youtube]] explicat pas a pas. Aquest article també el tens en [[https://www.youtube.com/watch?v=bHg1b0XcU3g|dues parts en format vídeotutorial a Youtube]] explicat pas a pas.
  
Línia 17: Línia 27:
 {{youtube>pv1_CPLg4xw}} {{youtube>pv1_CPLg4xw}}
  
- +\\
-{{tag> #Daw #DawMpDual #DawMp07Uf1 #DawMp07Uf02 #DawMp07Uf03 #DawMp07Uf04 #DawMp07Uf1 #DawMp07Uf02 #DawMp07Uf03 #DawMp07Uf04 #Ciber #CiberMp03 #Ceti #CetiMp03 }}+
  
 ===== Instal·lació ===== ===== Instal·lació =====
Línia 240: Línia 249:
   * [[https://jinja.palletsprojects.com/en/2.11.x/templates/#include|Includes]] és una senzilla manera d'afegir capçalera i //footers// iguals a totes les nostres pàgines. Us recomano utilitzar això per començar.   * [[https://jinja.palletsprojects.com/en/2.11.x/templates/#include|Includes]] és una senzilla manera d'afegir capçalera i //footers// iguals a totes les nostres pàgines. Us recomano utilitzar això per començar.
   * [[https://jinja.palletsprojects.com/en/2.11.x/templates/#template-inheritance|Herència de plantilles]] és un mètode una mica més sofisticat amb alguns avantatges, però costa una mica més d'entendre. Cal definir una pàgina //master// dividida en ''blocks'' o seccions, i després derivar les pàgines filles (on podem definir o sobreescriure cada ''block'').   * [[https://jinja.palletsprojects.com/en/2.11.x/templates/#template-inheritance|Herència de plantilles]] és un mètode una mica més sofisticat amb alguns avantatges, però costa una mica més d'entendre. Cal definir una pàgina //master// dividida en ''blocks'' o seccions, i després derivar les pàgines filles (on podem definir o sobreescriure cada ''block'').
- 
- 
- 
  
 \\ \\
  
-===== Testing ===== +===== Per a saber-ne més ===== 
-Anem a veure com podem testejar les nostres aplicacions fetes amb Flask.+Hem fet un repàs de les funcions bàsiques del //framework// Flask. Ens queda un parell de temes per cobrir tots els temes essencials, i que podeu seguir investigant en el propi [[https://flask.palletsprojects.com/quickstart/|quickstart de Flask]]:
  
-Fem-li un cop d'ull a la [[https://flask.palletsprojects.com/testing/|documentació de test amb Flask]].+  * Persistència en base de dades 
 +  * Sessions
  
-Primera cosa que cal fer, instal·lar el mòdul de tests ''pytest'': 
-  (env) $ pip install pytest 
  
-Després, ens diuen que fem un **test skeleton**, però l'exemple que ens donen té una configuració avançada per posar punt la base de dades, utilitzant una //app factory//, etc.+També hi ha aquest cursos que poden ser interessants: 
 +  [[https://courses.miguelgrinberg.com/p/flask-mega-tutorial|mega-tutorial de Flask de Miguel Grinberg]] que té un índex prometedor. Podeu fer un cop d'ull les introduccions, la resta del curs és de pagament. 
 +  * [[https://platzi.com/cursos/flask/|Aquest curs de Flask de Plazi.com]] pinta molt béamb videotutorials en castellà.
  
-Nosaltres implementarem una versió simplificada sobre l'arxiu ''test_web.py'':+\\
  
-<file python test_web.py > 
-import pytest 
  
-from web import app+===== 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'Hello, World' in rv.data 
-</file> 
- 
-Correm els tests amb la comanda ''pytest'': 
-<code> 
-(env) $ pytest 
-============================ test session starts ============================= 
-platform linux -- Python 3.8.10, pytest-6.2.5, py-1.10.0, pluggy-1.0.0 
-rootdir: /home/enric/dev21/basicflask 
-collected 1 item                                                              
- 
-test_web.py .                                                          [100%] 
- 
-============================= 1 passed in 0.09s ============================== 
-</code> 
- 
-**Com podem veure, ''pytest'' posa en marxa els tests dels arxius que comencen per ''test_'', i dins d'aquests, corre les funcions que també comencin per ''test_''.** 
- 
-==== Exercici ==== 
-<WRAP todo> 
-Examina [[https://flask.palletsprojects.com/en/2.0.x/testing/#logging-in-and-out|la secció "logging in and out" de la documentació dels tests]] i realitza el següent exercici: 
   * Crea un formulari que demani usuari i contrasenya. El formulari s'accedeix per mètode GET però envia les dades per mètode POST.   * Crea un formulari que demani usuari i contrasenya. El formulari s'accedeix per mètode GET però envia les dades per mètode POST.
   * Crea una pàgina (per POST) que respongui al formulari d'usuari i contrasenya. Crea un diccionari global amb noms d'usuari i contrasenyes vàlids (//hardcoded//).   * Crea una pàgina (per POST) que respongui al formulari d'usuari i contrasenya. Crea un diccionari global amb noms d'usuari i contrasenyes vàlids (//hardcoded//).
   * Assegura't que la pàgina de resposta al formulari respon amb un missatge que contingui un "OK" a la pàgina, i si el nom d'usuari és erroni respon adequadament amb un missatge que contingui "ERROR".   * Assegura't que la pàgina de resposta al formulari respon amb un missatge que contingui un "OK" a la pàgina, i si el nom d'usuari és erroni respon adequadament amb un missatge que contingui "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).   * **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 //hardcodejat// al codi es loguen correctament. 
-    - Que una combinació usuari/contrasenya que no ha estat introduïda no funciona i dona el missatge d'error. 
 </WRAP> </WRAP>
  
 \\ \\
  
-===== Per a saber-ne més ===== +===== Testing i + =====
-Hem fet un repàs de les funcions bàsiques del //framework// Flask. Ens queda un parell de temes per cobrir tots els temes essencials, i que podeu seguir investigant en el propi [[https://flask.palletsprojects.com/quickstart/|quickstart de Flask]]:+
  
-  * Persistència en base de dades +Aquest article continua a [[Python Web Test]] a [[Docker Flask]].
-  * Sessions +
- +
- +
-També hi ha aquest cursos que poden ser interessants: +
-  * [[https://courses.miguelgrinberg.com/p/flask-mega-tutorial|mega-tutorial de Flask de Miguel Grinberg]] que té un índex prometedor. Podeu fer un cop d'ull les introduccions, la resta del curs és de pagament. +
-  * [[https://platzi.com/cursos/flask/|Aquest curs de Flask de Plazi.com]] pinta molt bé, amb videotutorials en castellà.+
  
 \\ \\
  
python_web.1669749507.txt.gz · Darrera modificació: 2022/11/29 19:18 per enric_mieza_sanchez