Diferencia entre revisiones de «Testing en Python»
(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
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