Я пытаюсь сделать простой макет для пользовательской функции в Python.Эта функция вызывает aws и возвращает список IP-адресов для всех экземпляров в среде.Поскольку я пишу модульные тесты, я хочу иметь возможность смоделировать ответ от этой функции, поэтому мне не нужно нажимать AWS для тестирования.
Я думаю, что проблема связана с цельюпользуюсь.Я перепробовал все, что мог, но безуспешно.
Я пробовал использовать патч следующим образом:
def test_mock_ip_response(self):
with patch("app.api.commands.ip_addresses", return_value=["10.10.10.10"]):
results=ip_addresses("stage")
print (results)
assert False
и с декоратором:
@patch("app.api.commands.ip_addresses")
def test_mock_bash_response(self, mock_ip_addresses):
mock_ip_addresses.return_value=["10.10.10.10"]
results=ip_addresses("stage")
print (results)
assert False
В любом случае, функция ip_addresses всегда пыталась вызывать в AWS, поэтому вызов не улавливается.
О, и я знаю, что утверждения установлены в ложь, вот только Pytest покажетмне стандартный вывод для моего тестирования.
Обновление: включая код для ip_addresses:
def ip_addresses(environment: str) -> List[str]:
client = get_client("ec2")
filters = #removed since they contain naming conventions
response = client.describe_instances(Filters=filters)
return [
i["PrivateIpAddress"] for r in response["Reservations"] for i in r["Instances"]
]