Как использовать приспособление pytest для создания экземпляра тестируемого объекта? - PullRequest
0 голосов
/ 03 марта 2020

Похоже, что приборы должны использоваться для создания экземпляра тестируемого объекта для pytest, особенно если он используется несколькими функциями test_. Однако, после попытки адаптировать примеры, приведенные в pytest do c, я не могу заставить работать следующее:

import pytest
...
@pytest.fixture
def newMyClass():
    obj = MyClass(1,2)

...
def test_aMethod(newMyClass):
    objectUnderTest = newMyClass.obj
    ...

Нет претензий к устройству или конструктору, но затем я получаю pytest ошибка

   def test_aMethod(newMyClass):
>      objectUnderTest = newMyClass.obj()
E      AttributeError: 'NoneType' object has no attribute 'obj'

Если для этого могут использоваться приборы, как это должно быть закодировано?

1 Ответ

0 голосов
/ 03 марта 2020

Чтобы очистить ответ @ hoefling, вам нужно создать экземпляр вашего класса напрямую и вернуть этот экземпляр. Проверьте этот код, если вы ищете очищенную версию.

import pytest

class MyClass():
  def __init__(self, obj, foo):
      self.obj = obj
      self.foo = foo

@pytest.fixture
def newMyClass():
    myClassInstance = MyClass(1,2)
    return myClassInstance

def test_aMethod(newMyClass):
    objectUnderTest = newMyClass.obj
    assert objectUnderTest
...