Почему в pytest после добавления наследования фикстура перестает быть доступной?

Как можно избавиться от ошибки "missing 1 required positional argument: 'use_benchmark'" при использовании наследования от MyTest в данном коде Python?
  • 13 августа 2024 г. 13:33
Ответы на вопрос 1
В pytest фикстуры не наследуются автоматически, поэтому после добавления наследования в тестовом классе фикстура перестает быть доступной, так как pytest не знает, что она должна быть унаследована. Для того чтобы фикстура была доступна в наследуемом классе, можно явно указать, что класс наследует фикстуру с помощью атрибута `autouse=True`.

Чтобы избавиться от ошибки "missing 1 required positional argument: 'use_benchmark'", можно изменить наследуемый класс `MyTest` таким образом, чтобы он принимал аргументы, передаваемые в конструктор родительского класса. Например, можно переопределить конструктор класса `MyTest` и передать необходимые аргументы в конструктор родительского класса следующим образом:

```python
class MyTest(unittest.TestCase):
    def __init__(self, methodName='runTest', use_benchmark=True):
        super().__init__(methodName)
        self.use_benchmark = use_benchmark

    def test_something(self):
        self.assertTrue(True)
```

Таким образом, при инициализации объекта класса `MyTest` можно передать аргументы `methodName` и `use_benchmark` и избежать ошибки "missing 1 required positional argument: 'use_benchmark'".
Похожие вопросы