Как заставить pytest игнорировать класс с именем TestSomething? [дубликат]
Я работаю над своего рода тестовой средой, в которой, TestSomething
конечно же, есть классы . И я понял, что мои тесты терпят неудачу, потому что pytest видит эти классы как «что-то, что мне нужно создать и запустить!» Сразу после импорта. И это совершенно не сработает.
import pytest
from package import TestSomethingClass
Можно ли напрямую импортировать такой класс из тестового файла pytest? Или мне следует использовать их косвенно, через приспособление?
Та же проблема относится к исключениям, так как мне нужно было бы сделать что-то вроде
with pytest.raises(TestsSomethingError):
Ответы
Явно отключить
Вы можете разрешить 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