Я пытаюсь решить юнит-тест, который выглядит следующим образом:
__ 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"]
, хотя регистрация не важна, чем предыдущая оценка существует в списке.
Я удалилнекоторые из кода импорта / шаблон