Как заставить pytest игнорировать класс с именем TestSomething? [дубликат]

Aug 16 2020

Я работаю над своего рода тестовой средой, в которой, TestSomethingконечно же, есть классы . И я понял, что мои тесты терпят неудачу, потому что pytest видит эти классы как «что-то, что мне нужно создать и запустить!» Сразу после импорта. И это совершенно не сработает.

import pytest
from package import TestSomethingClass

Можно ли напрямую импортировать такой класс из тестового файла pytest? Или мне следует использовать их косвенно, через приспособление?

Та же проблема относится к исключениям, так как мне нужно было бы сделать что-то вроде

with pytest.raises(TestsSomethingError):

Ответы

4 DavidJ Aug 16 2020 at 03:59

Явно отключить

Вы можете разрешить pytest игнорировать этот конкретный класс в силу того, что он начинается со слова Test, установив __test__флаг в Falseпределах вашего конфликтующего класса

class TestSomethingClass(object):
    __test__ = False

    def test_class_something(self, object):
        pass

характерная черта: https://github.com/pytest-dev/pytest/pull/1561


Конфигурационный файл

Мы также можем полностью изменить соглашение в вашем pytest.iniфайле и игнорировать все имена классов, с которых начинается слово Example. Но я не советую этого, так как мы потенциально можем столкнуться с непредвиденными последствиями в будущем.

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

Соглашения Pytest

  • тестировать префиксные тестовые функции или методы вне класса

  • test с префиксом тестовых функций или методов внутри тестовых классов с префиксом Test (без метода инициализации )

Источник: https://docs.pytest.org/en/stable/customize.html