Как мне помочь Pylance узнать, что базовый класс все еще является тестовым примером?Python

Программы на Python
Ответить
Anonymous
 Как мне помочь Pylance узнать, что базовый класс все еще является тестовым примером?

Сообщение Anonymous »

У меня есть серия модульных тестов, которые нужно выполнить для двух разных реализаций одного и того же «интерфейса». Эти тесты используют только те методы, которые существуют в обеих реализациях. Поскольку в конечном итоге они идентичны, я записал их в абстрактном базовом классе CommonScenarios. Этот класс наследуется TestImplementationA и TestImplementationB, которые также наследуют unittest.TestCase.
Теперь TestImplementationA и TestImplementationB практически не имеют логики: только инициализация тестируемого класса. Фактические тесты находятся в CommonScenarios.
Это вызывает проблемы с Pylance, который выделяет любой вызов, связанный с unittest, например self.assertEqual, как несуществующий.
Как мне сообщить Pylance, что базовый класс всегда будет наследоваться классом, который также наследуется от unittest.TestCase?
class CommonScenarios(abc.ABC):
def test_do_something(self):
expected = self._implementation.doSomething()
actual = 987
self.assertEqual(expected, actual)
# The previous line generates the following Pylance warning:
# Cannot access attribute "assertEqual" for class "CommonScenarios*"
# Attribute "assertEqual" is unknown

class TestImplementationA(CommonScenarios, unittest.TestCase):
def setUp(self):
self._implementation = example.ImplementationA(True, 123);

class TestImplementationB(CommonScenarios, unittest.TestCase):
def setUp(self):
self._implementation = example.ImplementationB();


Подробнее здесь: https://stackoverflow.com/questions/798 ... -test-case
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»