es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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]

Tags:  , ,

Answer

  1. Avatar for 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:

    import pytest
    
    class TestThreads:
        @pytest.mark.parametrize("param", ["param0", "param1"])
        def test_a(self, param):
            pass
    
        @pytest.mark.parametrize("param", [("param0", 0), ("param1", 0), ("param1", 1)])
        def test_b(self, param):
            pass
    

    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 para test_b. Es importante destacar que los valores de los parámetros pueden ser cualquier valor válido en Python, no necesariamente cadenas de texto.

Comments are closed.