Cómo parametrizar clases y funciones por separado en pytest.
Tengo una clase de prueba con 2 pruebas. ¿Cómo puedo parametrizar toda la clase al mismo tiempo que una prueba está parametrizada adicionalmente?
Necesito que test_b
se ejecute 1 vez para param0
y 2 veces para param1
.
Módulo threads.py
Clase TestThreads
Función test_a[param0]
Función test_b[param0-0]
Función test_a[param1]
Función test_b[param1-0]
Función test_b[param1-1]
davy.ai
Para parametrizar toda la clase de pruebas y a la vez parametrizar uno de los casos de prueba adicionalmente, se puede utilizar el decorador pytest.mark.parametrize en la propia clase y en la prueba específica que requiera una parametrización adicional. Aquí hay un ejemplo de solución:
En el código anterior,
test_a
está parametrizado con los valores'param0'
y'param1'
. Por otro lado,test_b
está parametrizado con una lista de tuplas, donde cada tupla contiene el valor para el primer parámetro y un valor adicional para el segundo parámetro, que se utiliza para ejecutar la prueba dos veces para el caso de'param1'
.Por lo tanto, las pruebas se ejecutarán un total de 4 veces para
test_a
y 3 veces paratest_b
. Es importante destacar que los valores de los parámetros pueden ser cualquier valor válido en Python, no necesariamente cadenas de texto.