SlideShare a Scribd company logo
1 of 9
Download to read offline
testing
Andreu Vallbona - Lighting Talks - May 2017
testing
Algunes recomanacions útils que ens han servit:
● emprar “fixtures” sempre que se pugui, evitar copy-paste innecessari
● emprar el parametrize
● no sofisticar massa la lògica dels tests
● tests autocontinguts, que siguin independents un de l’altre i es puguin executar sense importar
l’ordre o fins i tot de manera concurrent
● base de dades de test en memòria
● si es fa servir django constance, canviar el backend:
testing
Tests afegits (i per afegir) al template de cookiecutter dels projectes de Django:
● comprovar que els models l’str funciona
● executar el system check de Django
● comprovar que les urls són totes accessibles i retornin una resposta correcta
● linters i pep8
● comprovar i executar les migracions (més lent però evitar futurs problemes al desplegar)
● todo: implementar comanda que ens congeli el nom i path de les urls, d’aquesta manera podem
evitar possibles errors implementant un test que verifiqui que les urls congelades són accessibles.
testing
Petit resum dels paquets que hem fet servir per temes de testing:
● pytest - framework de testing
● pytest-django - plugin de pytest que ens proporciona tota una sèrie de fixtures molt útils per
testejar projectes implementats en Django
● pytest-watch - continuous pytest runner, serveix per tornar a llançar els tests quan s’han detectat
canvis als arxius del projecte.
● pytest-testmon - selecciona i reexecuta els tests afectats pels darrers canvis, ja siguin canvis de
les classes de negoci o canvis dels propis tests. Veure vídeo.
● model-mommy - package que ens serveix per a crear fixtures a partir dels nostres models de
Django de manera molt fàcil
● pytest-lazy-fixture - package que ens serveix per a poder emprar els fixtures en mode lazy, cosa
que ens permet, per exemple, emprar els fixtures com a paràmetres amb el parametrize.
testing
● hypothesis - serveix per generar dades random per a la nostra especificació de dades o model de
dades. Ens ajuda a que els tests funcioni per a qualsevol valor dins uns rangs i no només per casos
concrets.
● pytest-mock - ens serveix per a fer patching de mètodes o funcions que emprarem per a testejar la
nostra lògica. Per exemple a talcom s’ha emprat per a testejar els mètodes de pagament contra el
backend de pago, en aquest cas, stripe, sense necessitat de connectar-se a stripe.
● pytest-checkipdb - ens serveix per a verificar que no deixam desat al codi algun import ipdb;
ipdb.set_trace()
● pytest-cov - ens serveix per a veure la part del nostre codi que no ha estat testejada. Molt útil ja
que ens permet generar informes en html i visualment detectar la part del nostre codi sense
testejar.
● pytest-flake8 - ens serveix per revisar que el nostre codi serveix una guia d’estil, per exemple, el
pep8
testing
● pytest-sugar - ens serveix per canviar el look&feel de la sortida del pytest
● freezegun - ens serveix per a congelar el temps. Si tenim mètodes que empren el mètode
datetime.now ens permet fer que sempre torni una data i/o hora determinades.
● erradicate - revisa que no t’hagis deixat codi comentat.
● pytest-splinter - ens permet aixecar sessions de navegador per tal d’executar tests funcionals.
Està un nivell per sobre de selenium i facilita molt sobretot l’emplenament de formularis.
● pytest-xdist - ens permet executar tests de manera concurrent, accelera l’execució dels tests si en
tenim molts. És obligatori que els tests siguin totalment autocontinguts per emprar xdist.
testing
Exemple de pytest-watch
testing
testing
Proudly created with
Thanks to Tomeu Canyelles, Marc Tudurí i Pau Rul·lan

More Related Content

Similar to Apsl testing

Proves de Software (en Java amb JUnit)
Proves de Software (en Java amb JUnit)Proves de Software (en Java amb JUnit)
Proves de Software (en Java amb JUnit)Juan-Manuel Gimeno
 
Sessió 4 Tècnics - Programa formatiu Dades Obertes per Entitats sense Ànim de...
Sessió 4 Tècnics - Programa formatiu Dades Obertes per Entitats sense Ànim de...Sessió 4 Tècnics - Programa formatiu Dades Obertes per Entitats sense Ànim de...
Sessió 4 Tècnics - Programa formatiu Dades Obertes per Entitats sense Ànim de...Iniciativa Barcelona Open Data
 
CGD2021 - "Canvi cultural, agilitat, qualitat i sostenibilitat del desenvolup...
CGD2021 - "Canvi cultural, agilitat, qualitat i sostenibilitat del desenvolup...CGD2021 - "Canvi cultural, agilitat, qualitat i sostenibilitat del desenvolup...
CGD2021 - "Canvi cultural, agilitat, qualitat i sostenibilitat del desenvolup...Congrés Govern Digital
 
Gestor incidencias OCS
Gestor incidencias OCSGestor incidencias OCS
Gestor incidencias OCSkingofbike
 
Pràctica GLPI+OCS
Pràctica GLPI+OCSPràctica GLPI+OCS
Pràctica GLPI+OCSsergixavi
 
ELISAVA Beta. Cas d'èxit desenvolupat per Ymbra
ELISAVA Beta. Cas d'èxit desenvolupat per YmbraELISAVA Beta. Cas d'èxit desenvolupat per Ymbra
ELISAVA Beta. Cas d'èxit desenvolupat per YmbraYmbra
 
Practica 2-instal-lar-open km-en-una-maquina-virtual-debian-george
Practica 2-instal-lar-open km-en-una-maquina-virtual-debian-georgePractica 2-instal-lar-open km-en-una-maquina-virtual-debian-george
Practica 2-instal-lar-open km-en-una-maquina-virtual-debian-georgeGeorgeTalmaciuValent
 
Introducció a Scrum
Introducció a ScrumIntroducció a Scrum
Introducció a ScrumJordi Catà
 
1213 Threads [1] Programació concurrent, processos i fils
1213 Threads [1] Programació concurrent, processos i fils1213 Threads [1] Programació concurrent, processos i fils
1213 Threads [1] Programació concurrent, processos i filsOriol Torres
 
ocs inventory gpli gestor incidencias catalan
ocs inventory gpli gestor incidencias catalanocs inventory gpli gestor incidencias catalan
ocs inventory gpli gestor incidencias catalanIvan Urgell
 
Presentació M8 UF1NF1
Presentació M8 UF1NF1Presentació M8 UF1NF1
Presentació M8 UF1NF1fgherathlet
 
PRESENTACIO
PRESENTACIOPRESENTACIO
PRESENTACIOsowe17
 
Pwp copia - copia
Pwp   copia - copiaPwp   copia - copia
Pwp copia - copiasowe17
 

Similar to Apsl testing (20)

Proves de Software (en Java amb JUnit)
Proves de Software (en Java amb JUnit)Proves de Software (en Java amb JUnit)
Proves de Software (en Java amb JUnit)
 
Tests nunit nunitforms
Tests nunit nunitformsTests nunit nunitforms
Tests nunit nunitforms
 
Garcia sergi 01gestorincidenciesocs
Garcia sergi 01gestorincidenciesocsGarcia sergi 01gestorincidenciesocs
Garcia sergi 01gestorincidenciesocs
 
Curs 1.5 Publicació de Dades
Curs 1.5 Publicació de DadesCurs 1.5 Publicació de Dades
Curs 1.5 Publicació de Dades
 
Sessió 4 Tècnics - Programa formatiu Dades Obertes per Entitats sense Ànim de...
Sessió 4 Tècnics - Programa formatiu Dades Obertes per Entitats sense Ànim de...Sessió 4 Tècnics - Programa formatiu Dades Obertes per Entitats sense Ànim de...
Sessió 4 Tècnics - Programa formatiu Dades Obertes per Entitats sense Ànim de...
 
CGD2021 - "Canvi cultural, agilitat, qualitat i sostenibilitat del desenvolup...
CGD2021 - "Canvi cultural, agilitat, qualitat i sostenibilitat del desenvolup...CGD2021 - "Canvi cultural, agilitat, qualitat i sostenibilitat del desenvolup...
CGD2021 - "Canvi cultural, agilitat, qualitat i sostenibilitat del desenvolup...
 
Gestor incidencias OCS
Gestor incidencias OCSGestor incidencias OCS
Gestor incidencias OCS
 
Pràctica GLPI+OCS
Pràctica GLPI+OCSPràctica GLPI+OCS
Pràctica GLPI+OCS
 
ELISAVA Beta. Cas d'èxit desenvolupat per Ymbra
ELISAVA Beta. Cas d'èxit desenvolupat per YmbraELISAVA Beta. Cas d'èxit desenvolupat per Ymbra
ELISAVA Beta. Cas d'èxit desenvolupat per Ymbra
 
Tema1
Tema1Tema1
Tema1
 
Practica 2-instal-lar-open km-en-una-maquina-virtual-debian-george
Practica 2-instal-lar-open km-en-una-maquina-virtual-debian-georgePractica 2-instal-lar-open km-en-una-maquina-virtual-debian-george
Practica 2-instal-lar-open km-en-una-maquina-virtual-debian-george
 
Introducció a Scrum
Introducció a ScrumIntroducció a Scrum
Introducció a Scrum
 
glpi + ocs_inventory
glpi + ocs_inventoryglpi + ocs_inventory
glpi + ocs_inventory
 
GLPI + OCS Inventory
GLPI + OCS InventoryGLPI + OCS Inventory
GLPI + OCS Inventory
 
1213 Threads [1] Programació concurrent, processos i fils
1213 Threads [1] Programació concurrent, processos i fils1213 Threads [1] Programació concurrent, processos i fils
1213 Threads [1] Programació concurrent, processos i fils
 
ocs inventory gpli gestor incidencias catalan
ocs inventory gpli gestor incidencias catalanocs inventory gpli gestor incidencias catalan
ocs inventory gpli gestor incidencias catalan
 
Shibboleth, el cas d'ús de la UOC
Shibboleth, el cas d'ús de la UOCShibboleth, el cas d'ús de la UOC
Shibboleth, el cas d'ús de la UOC
 
Presentació M8 UF1NF1
Presentació M8 UF1NF1Presentació M8 UF1NF1
Presentació M8 UF1NF1
 
PRESENTACIO
PRESENTACIOPRESENTACIO
PRESENTACIO
 
Pwp copia - copia
Pwp   copia - copiaPwp   copia - copia
Pwp copia - copia
 

More from Andreu Vallbona Plazas

Py Day Mallorca - Pipenv - Python Dev Workflow for Humans
Py Day Mallorca  - Pipenv - Python Dev Workflow for HumansPy Day Mallorca  - Pipenv - Python Dev Workflow for Humans
Py Day Mallorca - Pipenv - Python Dev Workflow for HumansAndreu Vallbona Plazas
 
PyBCN - Pytest: recomendaciones, paquetes básicos para testing en Python y Dj...
PyBCN - Pytest: recomendaciones, paquetes básicos para testing en Python y Dj...PyBCN - Pytest: recomendaciones, paquetes básicos para testing en Python y Dj...
PyBCN - Pytest: recomendaciones, paquetes básicos para testing en Python y Dj...Andreu Vallbona Plazas
 
PyBCN - pipenv - python dev workflow for humans
PyBCN - pipenv - python dev workflow for humansPyBCN - pipenv - python dev workflow for humans
PyBCN - pipenv - python dev workflow for humansAndreu Vallbona Plazas
 
Pytest - testing tips and useful plugins
Pytest - testing tips and useful pluginsPytest - testing tips and useful plugins
Pytest - testing tips and useful pluginsAndreu Vallbona Plazas
 

More from Andreu Vallbona Plazas (9)

Localhost to the internet
Localhost to the internetLocalhost to the internet
Localhost to the internet
 
Py Day Mallorca - Pipenv - Python Dev Workflow for Humans
Py Day Mallorca  - Pipenv - Python Dev Workflow for HumansPy Day Mallorca  - Pipenv - Python Dev Workflow for Humans
Py Day Mallorca - Pipenv - Python Dev Workflow for Humans
 
PyBCN - Pytest: recomendaciones, paquetes básicos para testing en Python y Dj...
PyBCN - Pytest: recomendaciones, paquetes básicos para testing en Python y Dj...PyBCN - Pytest: recomendaciones, paquetes básicos para testing en Python y Dj...
PyBCN - Pytest: recomendaciones, paquetes básicos para testing en Python y Dj...
 
PyBCN - pipenv - python dev workflow for humans
PyBCN - pipenv - python dev workflow for humansPyBCN - pipenv - python dev workflow for humans
PyBCN - pipenv - python dev workflow for humans
 
Pipenv python dev workflow for humans
Pipenv  python dev workflow for humansPipenv  python dev workflow for humans
Pipenv python dev workflow for humans
 
Apsl attrs
Apsl   attrsApsl   attrs
Apsl attrs
 
Apsl pycharm + docker
Apsl   pycharm + dockerApsl   pycharm + docker
Apsl pycharm + docker
 
Apsl translation manager
Apsl   translation managerApsl   translation manager
Apsl translation manager
 
Pytest - testing tips and useful plugins
Pytest - testing tips and useful pluginsPytest - testing tips and useful plugins
Pytest - testing tips and useful plugins
 

Apsl testing

  • 1. testing Andreu Vallbona - Lighting Talks - May 2017
  • 2. testing Algunes recomanacions útils que ens han servit: ● emprar “fixtures” sempre que se pugui, evitar copy-paste innecessari ● emprar el parametrize ● no sofisticar massa la lògica dels tests ● tests autocontinguts, que siguin independents un de l’altre i es puguin executar sense importar l’ordre o fins i tot de manera concurrent ● base de dades de test en memòria ● si es fa servir django constance, canviar el backend:
  • 3. testing Tests afegits (i per afegir) al template de cookiecutter dels projectes de Django: ● comprovar que els models l’str funciona ● executar el system check de Django ● comprovar que les urls són totes accessibles i retornin una resposta correcta ● linters i pep8 ● comprovar i executar les migracions (més lent però evitar futurs problemes al desplegar) ● todo: implementar comanda que ens congeli el nom i path de les urls, d’aquesta manera podem evitar possibles errors implementant un test que verifiqui que les urls congelades són accessibles.
  • 4. testing Petit resum dels paquets que hem fet servir per temes de testing: ● pytest - framework de testing ● pytest-django - plugin de pytest que ens proporciona tota una sèrie de fixtures molt útils per testejar projectes implementats en Django ● pytest-watch - continuous pytest runner, serveix per tornar a llançar els tests quan s’han detectat canvis als arxius del projecte. ● pytest-testmon - selecciona i reexecuta els tests afectats pels darrers canvis, ja siguin canvis de les classes de negoci o canvis dels propis tests. Veure vídeo. ● model-mommy - package que ens serveix per a crear fixtures a partir dels nostres models de Django de manera molt fàcil ● pytest-lazy-fixture - package que ens serveix per a poder emprar els fixtures en mode lazy, cosa que ens permet, per exemple, emprar els fixtures com a paràmetres amb el parametrize.
  • 5. testing ● hypothesis - serveix per generar dades random per a la nostra especificació de dades o model de dades. Ens ajuda a que els tests funcioni per a qualsevol valor dins uns rangs i no només per casos concrets. ● pytest-mock - ens serveix per a fer patching de mètodes o funcions que emprarem per a testejar la nostra lògica. Per exemple a talcom s’ha emprat per a testejar els mètodes de pagament contra el backend de pago, en aquest cas, stripe, sense necessitat de connectar-se a stripe. ● pytest-checkipdb - ens serveix per a verificar que no deixam desat al codi algun import ipdb; ipdb.set_trace() ● pytest-cov - ens serveix per a veure la part del nostre codi que no ha estat testejada. Molt útil ja que ens permet generar informes en html i visualment detectar la part del nostre codi sense testejar. ● pytest-flake8 - ens serveix per revisar que el nostre codi serveix una guia d’estil, per exemple, el pep8
  • 6. testing ● pytest-sugar - ens serveix per canviar el look&feel de la sortida del pytest ● freezegun - ens serveix per a congelar el temps. Si tenim mètodes que empren el mètode datetime.now ens permet fer que sempre torni una data i/o hora determinades. ● erradicate - revisa que no t’hagis deixat codi comentat. ● pytest-splinter - ens permet aixecar sessions de navegador per tal d’executar tests funcionals. Està un nivell per sobre de selenium i facilita molt sobretot l’emplenament de formularis. ● pytest-xdist - ens permet executar tests de manera concurrent, accelera l’execució dels tests si en tenim molts. És obligatori que els tests siguin totalment autocontinguts per emprar xdist.
  • 9. testing Proudly created with Thanks to Tomeu Canyelles, Marc Tudurí i Pau Rul·lan