Testing en Python
Sumario
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
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
- Curso de Selenium con Python para principiantes e intermedio en Openwebinars
- Testing e ferramentas de testing en Openwebinars