Como fazer o pytest ignorar uma classe chamada TestSomething? [duplicado]
Estou trabalhando em um tipo de estrutura de teste que por acaso tem classes nomeadas, é TestSomething
claro. E percebi que meus testes estão falhando porque o pytest vê essas classes como "algo que preciso instanciar e executar!", Assim que importadas. E isso absolutamente não vai funcionar.
import pytest
from package import TestSomethingClass
É possível importar essa classe de um arquivo de teste pytest diretamente? Ou devo usá-los indiretamente por meio de um dispositivo elétrico, talvez?
O mesmo problema se aplica às exceções, pois eu precisaria fazer algo como
with pytest.raises(TestsSomethingError):
Respostas
Desativar explicitamente
Você pode permitir que o pytest ignore esta classe específica em virtude de ela começar com a palavra Test
, definindo o __test__
sinalizador para False
dentro de sua classe conflitante
class TestSomethingClass(object):
__test__ = False
def test_class_something(self, object):
pass
característica: https://github.com/pytest-dev/pytest/pull/1561
Arquivo de configuração
Também poderíamos mudar completamente a convenção em seu pytest.ini
arquivo e ignorar todos os nomes de classes que iniciam a palavra Example
. Mas eu não aconselho isso, pois podemos encontrar consequências indesejadas no futuro.
#pytest.ini file
[pytest]
python_classes = !Example
Convenções de Pytest
testar funções ou métodos de teste prefixados fora da classe
testar funções ou métodos de teste com prefixo dentro de classes de teste com prefixo de teste (sem um método init )
Fonte: https://docs.pytest.org/en/stable/customize.html