Diferencia entre revisiones de «Testing en Python»

De MediaWiki
Ir a la navegación Ir a la búsqueda
(Página creada con « = Referencias = * Curso de Selenium con Python para [https://openwebinars.net/academia/portada/selenium-python-principiantes/ principiantes] e [https://openwebinars.net/ac…»)
 
Línea 1: Línea 1:
 +
 +
= Testing en Python =
 +
 +
; Pytest
 +
: Librería moi popular que permite crear tests unitarios de forma moi sinxela.
 +
‎<syntaxhighlight lang="python">
 +
# test_sum.py
 +
@pytest.mark.parametrize("test_input,expected", [(2,3,5), (3,4,7), (5,6,11)])
 +
def test_sum_is_working(a, b, result):
 +
assert sum(a,b) == result
 +
‎</syntaxhighlight>
 +
; Unittest
 +
: Librería estándar de python para facer testing (sobre todo unitario). Basease na creación de ''Test Cases'' para probar a aplicación.
 +
 +
; Mock
 +
: Módulo pertencente á librería de unittest quefacilita a creación de ''Mocks'' que imiten o comportamento dunha clase para así poder testear a aplicación de forma independente.
 +
 +
; Patch
 +
: Método que se atopa no módulo mock e que facilita a substitución de referencias en módulos python por obxectos Mock.
 +
 +
== Exemplos ==
 +
 +
Para probar as aplicacións:
 +
python -m calculadora.main add 1 1
 +
python -m jokes.main
 +
 +
Para ver algunhas das súas opcións ou como funcionan engade o parámetro -h.
 +
 +
Todos os tests están no cartafol tests das aplicacións. Para correlos:
 +
python -m unittest
 +
 +
== Calculadora ==
 +
Este [https://github.com/OpenWebinarsNet/PythonTesting/tree/main/calculadora proxecto de python] emula o comportamento dunha calculadora. Ten varias operacións implementadas, e
 +
teremos que testear que funcionan correctamente.
 +
 +
== Jokes ==
 +
 +
Este [https://github.com/OpenWebinarsNet/PythonTesting/tree/main/jokes proxecto de python] ataca a unha API Rest de bromas para recuperalas.
 +
 +
== Calculadora con máis probas ==
 +
 +
O [https://github.com/juanbenitopr/taller_testing_tools_python proxecto] e as probas.
 +
 +
== load_testing - locust ==
 +
Basease na xeración de varios usuarios virtuais para xenerar carga sobre a aplicación e comprobar o seu comportamento
 +
 +
 +
[[File:Load-testing-locust.PNG | Exemplo de load testing]]
 +
 +
== property_testing ==
 +
 +
Baesase na creación de tests válidos para calquer combinación de parámetros que se le poida pasar á función de testing.
 +
‎<syntaxhighlight lang="python" line>
 +
@given(op1=st.integers(), op2=st.integers())
 +
def test_calculate_is_working(op1: int, op2: int):
 +
  assert sum([op1, op2]) == op1 + op
 +
</syntaxhighlight>
 +
 +
== contract testing ==
 +
 +
Basease na utilización de API contract para comprobar que a implementación realízase de xeito correcto.
 +
schemathesis run http://localhost:8000/openapi.json
 +
 +
= Probas automáticas con Selenium =
 +
  
 
= Referencias =
 
= Referencias =
 
* Curso de Selenium con Python para [https://openwebinars.net/academia/portada/selenium-python-principiantes/ principiantes] e [https://openwebinars.net/academia/portada/selenium-python-intermedio/ intermedio] en [https://openwebinars.net/academia/ Openwebinars]
 
* Curso de Selenium con Python para [https://openwebinars.net/academia/portada/selenium-python-principiantes/ principiantes] e [https://openwebinars.net/academia/portada/selenium-python-intermedio/ intermedio] en [https://openwebinars.net/academia/ Openwebinars]
 
* [https://openwebinars.net/academia/portada/testing-python/ Testing] e [https://openwebinars.net/academia/portada/herramientas-testing-python/ ferramentas de testing] en [https://openwebinars.net/academia/ Openwebinars]
 
* [https://openwebinars.net/academia/portada/testing-python/ Testing] e [https://openwebinars.net/academia/portada/herramientas-testing-python/ ferramentas de testing] en [https://openwebinars.net/academia/ Openwebinars]

Revisión del 11:08 29 jun 2023

Testing en Python

Pytest
Librería moi popular que permite crear tests unitarios de forma moi sinxela.

‎

 # test_sum.py
 @pytest.mark.parametrize("test_input,expected", [(2,3,5), (3,4,7), (5,6,11)])
 def test_sum_is_working(a, b, result):
 assert sum(a,b) == result
‎
Unittest
Librería estándar de python para facer testing (sobre todo unitario). Basease na creación de Test Cases para probar a aplicación.
Mock
Módulo pertencente á librería de unittest quefacilita a creación de Mocks que imiten o comportamento dunha clase para así poder testear a aplicación de forma independente.
Patch
Método que se atopa no módulo mock e que facilita a substitución de referencias en módulos python por obxectos Mock.

Exemplos

Para probar as aplicacións:

python -m calculadora.main add 1 1
python -m jokes.main

Para ver algunhas das súas opcións ou como funcionan engade o parámetro -h.

Todos os tests están no cartafol tests das aplicacións. Para correlos:

python -m unittest

Calculadora

Este proxecto de python emula o comportamento dunha calculadora. Ten varias operacións implementadas, e teremos que testear que funcionan correctamente.

Jokes

Este proxecto de python ataca a unha API Rest de bromas para recuperalas.

Calculadora con máis probas

O proxecto e as probas.

load_testing - locust

Basease na xeración de varios usuarios virtuais para xenerar carga sobre a aplicación e comprobar o seu comportamento


Exemplo de load testing

property_testing

Baesase na creación de tests válidos para calquer combinación de parámetros que se le poida pasar á función de testing.

‎

1  @given(op1=st.integers(), op2=st.integers())
2  def test_calculate_is_working(op1: int, op2: int):
3   assert sum([op1, op2]) == op1 + op

contract testing

Basease na utilización de API contract para comprobar que a implementación realízase de xeito correcto.

schemathesis run http://localhost:8000/openapi.json

Probas automáticas con Selenium

Referencias