Como fazer o pytest ignorar uma classe chamada TestSomething? [duplicado]

Aug 16 2020

Estou trabalhando em um tipo de estrutura de teste que por acaso tem classes nomeadas, é TestSomethingclaro. 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

4 DavidJ Aug 16 2020 at 03:59

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 Falsedentro 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.iniarquivo 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