Consulta acerca de suites de test compatibilidades y recomendaciones

Hola,
estoy intentando incorporar test en mi desarrollo para micropython.
utilizando upip pude instalar unittest.
preguntas:
Entre pytest y unittest ¿hay mucha diferencia?
Sabiendo que la respuesta va a ser más que todo opinión ¿cual te gusta más y por que?
¿cual es la compatibilidad entre las suites de test? ¿hay otra tecnología diferente a estas para testear que sea recomendable o atendible?

¿que bibliografía me recomendarían acerca de test?

En cuanto a lectura sobre testing, se podría empezar leyendo los artículos de Martin Fowler: Testing Guide

  • Algunos artículos tienen varios años pero siguen vigentes dentro de todo, y aunque si bien los ejemplos en su mayoría están en Java, Ruby y/o JavaScript, es posible extrapolar su aplicación a Python.
  • Sobre libros, los artículos de Fowler suelen incluir referencias/recomendaciones a los mismos.

Espero que te sirva mi pequeño aporte y ojalá alguien pueda aportar más información :slight_smile:

Son dos formas diferentes de escribir tests.

  • unittest te fuerza a usar clases
  • pytest podes usar clases pero tambien podes usar funciones directamente

Por el otro lado, pytest tiene un monton de plugins, mientras que unittest no tiene (o tiene muy pocos).

A mi me gusta mas pytest.

Pytest puede correr lo tests de unittest pero unittest discover no puede correr los tests de pytest

Esta nose que esta abandonado, pero no se que onda nose2

Pytest,menos boilerplate, más Pythonico. Puede correr test hechos con nosetest y otros.
No sé Micropython, pero Unittest está en la biblioteca standard, fue el primero y toma mucho de Java
Saludos!
Luis Andraschnik

A mi me gusta nosetests … puede ser que este medio desactualizado. Me gusta en general tener el codigo organizado en clases (eso me parece mas “pythonico” si queremos charlar de pythonicidades).

Ademas, tambien, tengo el prejuicio de que “assert” siempre me parecio medio raro en python. Me gusta usar asserts pero tengo la impresion de que en codigo normal en python no “funcionaban” o no tiraban excepcion… claro… en pytest es distinto. no se porque.

Por cierto, unittest mas que de java, toma cosas del test unitario de Kent Beck de Smalltalk… pero son detalles :slight_smile: .

Igual no tengo problema en ir con pytest.

Ah… tambien una cosa que pasa con pytest es que me recuerda algunas suites de tests de javascript y me da pesadillas :slight_smile: ( jest )

salut!

El assert en Python funciona siempre y cuando no estés en modo optimizado… por ejemplo, para el siguiente código:

assert 1 == 0
print("Yay")

Lo grabo en t.py, y…

$ python3 t.py
Traceback (most recent call last):
  File "t.py", line 1, in <module>
    assert 1 == 0
AssertionError

$ python3 -O t.py
Yay

Gracias! Mucho tiempo programe para un python embebido en una aplicacion… y este corria en modo optimizado. Se ve que por eso me quedo esa “tara”!

Que curioso, de lo poco que vengo utilizando Jest hasta el momento, me recuerda más a unittest (son su estilo xUnit) que a pytest (con su uso de fixtures)

Cuestión de preferencia :slightly_smiling_face:

1 me gusta

En la última Python Developers Survey 2019 (conducida por Python Software Foundation y JetBrains) ya se puede ver que Pytest está siendo el standard de-facto en la industria (reemplazando a unittest).
En mi caso, me pasé a Pytest hace un par de años, con total éxito. Y en mi contexto, en general, todos lo han hecho (mi contexto == ~100 devs Python).

1 me gusta