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…») |
|||
| (No se muestran 3 ediciones intermedias del mismo usuario) | |||
| 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 = | ||
| + | |||
| + | == Introdución == | ||
| + | |||
| + | == Instalación de Selenium Webdriver == | ||
| + | |||
| + | == Primeiros pasos == | ||
| + | |||
| + | == Mecanismos de espera == | ||
| + | |||
| + | == Introducindo datos en formularios == | ||
| + | |||
| + | == Probas con unittest == | ||
| + | |||
| + | == Elementos intermedios == | ||
| + | |||
| + | == Patrón Page Object Model (POM) == | ||
| + | |||
| + | == Behave == | ||
| + | |||
| + | == Virtualenv == | ||
| + | |||
| + | == PyBuilder == | ||
| + | |||
| + | == Selenium Grid == | ||
= Referencias = | = Referencias = | ||
| + | * [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] | ||
| + | |||
| + | == Selenium == | ||
* 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:// | + | * [https://www.ionos.es/digitalguide/paginas-web/desarrollo-web/tutorial-de-selenium-webdriver/ Tutorial de Selenium: cómo usar el marco de pruebas cruzadas para navegador] |
| + | * [https://selenium-python.readthedocs.io/ Tutorial] by Baiju Muthukadan licensed under a Creative Commons Attribution-ShareAlike 4.0 International License. | ||
| + | * [https://www.selenium.dev/documentation/webdriver/getting_started/first_script/ Primer script] | ||
| + | * [https://contabo.com/blog/integration-testing-cheat-sheet/ Integration Testing Cheat Sheet ] | ||
Revisión actual del 08:59 14 ene 2025
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
Introdución
Instalación de Selenium Webdriver
Primeiros pasos
Mecanismos de espera
Introducindo datos en formularios
Probas con unittest
Elementos intermedios
Patrón Page Object Model (POM)
Behave
Virtualenv
PyBuilder
Selenium Grid
Referencias
Selenium
- Curso de Selenium con Python para principiantes e intermedio en Openwebinars
- Tutorial de Selenium: cómo usar el marco de pruebas cruzadas para navegador
- Tutorial by Baiju Muthukadan licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
- Primer script
- Integration Testing Cheat Sheet