¿Cómo hacer que pytest ignore una clase llamada TestSomething? [duplicar]
Estoy trabajando en una especie de marco de prueba que tiene clases nombradas, TestSomething
por 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
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 False
dentro 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.ini
archivo 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