¿Cómo hacer que pytest ignore una clase llamada TestSomething? [duplicar]

Aug 16 2020

Estoy trabajando en una especie de marco de prueba que tiene clases nombradas, TestSomethingpor supuesto. Y me di cuenta de que mis pruebas fallan porque pytest ve estas clases como "¡algo que necesito para crear una instancia y ejecutar!", Tan pronto como se importan. Y esto absolutamente no funcionará.

import pytest
from package import TestSomethingClass

¿Es posible importar dicha clase desde un archivo de prueba pytest directamente? ¿O quizás debería usarlos indirectamente a través de un accesorio?

El mismo problema se aplica a las excepciones, ya que tendría que hacer algo como

with pytest.raises(TestsSomethingError):

Respuestas

4 DavidJ Aug 16 2020 at 03:59

Deshabilitar explícitamente

Puede permitir que pytest ignore esta clase específica en virtud de que comienza con la palabra Test, estableciendo la __test__bandera Falsedentro de su clase en conflicto

class TestSomethingClass(object):
    __test__ = False

    def test_class_something(self, object):
        pass

característica: https://github.com/pytest-dev/pytest/pull/1561


Archivo de configuración

También podríamos cambiar la convención completamente en su pytest.iniarchivo e ignorar todos los nombres de clase que comienzan la palabra Example. Pero no aconsejo esto, ya que podríamos encontrar consecuencias no deseadas en el futuro.

#pytest.ini file
[pytest]
python_classes = !Example

Convenciones de Pytest

  • probar funciones o métodos de prueba con prefijo fuera de la clase

  • probar funciones o métodos de prueba con prefijo dentro de clases de prueba con prefijo de prueba (sin un método de inicio )

Fuente: https://docs.pytest.org/en/stable/customize.html