Python Mock - MockObject содержит / iter - PullRequest
0 голосов
/ 11 октября 2019

Я пытаюсь решить юнит-тест, который выглядит следующим образом:

__ main __. Py

from module import Connect

connect = Connect()

def source_status():
    for item in connect.connectors:
        logging.info("item.name : {}".format(item))
        logging.info("item.status : {}".format(item.status))

    logging.info(
        "Truttheeee : {}".format(
            "test" in connect.connectors
        )
    )
    logging.info("connectors : {}".format(connect.connectors))

test_main.py

@patch("__main__.Connect")
def test_connector_exists(
    mock_connect
):
    connector = MagicMock()
    connector.name = 'test'
    connector.status = 'RUNNING'
    connector.__str__.return_value = 'test'
    mock_connect.return_value.connectors = [connector]
    source_status()

Список connect.connectors печатается нормально.

__main__:source_status:109 - item.name : test
__main__:source_status:110 - item.status : RUNNING

Однако следующая строка, для которой я проверяю, существует ли соединитель в списке, не работает, и MagicMock объект напечатан

__main__:source_status:112 - Truttheeee : False
__main__:source_status:113 - connectors : [<MagicMock id='4449571952'>]

Мне кажется, мне не хватает какой-то насмешки над iter или содержит или repr что привело бы "test" in connect.connectors к оценке True и logging.info("connectors : {}".format(connect.connectors)) для записи чего-то вроде ["test"], хотя регистрация не важна, чем предыдущая оценка существует в списке.

Я удалилнекоторые из кода импорта / шаблон

...