Добрый день, пытаюсь написать тест,
часть кода тестируемой функции:
class StatusChecker():
async def _is_alive_icmp(self, ip_addr: str) -> bool:
try:
host = await async_ping(ip_addr, count=cnf.ICMP_COUNT,
privileged=False, timeout=3)
return host.is_alive
except:
logger.exception("Не известная ошибка при отправке ICMP пакета")
return False
Код теста:
def test_ip_is_ok(mocker, device_list):
mocked = mocker.patch('icmplib.async_ping')
mocked.return_value = True
status_checker = StatusChecker()
result_check = asyncio.run(status_checker._is_alive_icmp("192.168.0.1"))
assert result_check == True
Ну и тест валится с ошибкой:
def test_ip_is_ok(mocker, device_list):
mocked = mocker.patch('icmplib.async_ping')
mocked.return_value = True
status_checker = StatusChecker()
result_check = asyncio.run(status_checker._is_alive_icmp("192.168.0.1"))
> assert result_check == True
E assert False == True
Добавил проверку что
mocked не вызывается:
def test_that_to_ip_set_right_status_ip_is_ok(mocker, device_list):
mocked = mocker.patch('icmplib.async_ping')
mocked.return_value = True
status_checker = StatusChecker()
result_check = asyncio.run(status_checker._is_alive_icmp("192.168.0.1"))
> assert mocked.call_count == 1
Если
icmplib.async_ping заменить на
status_checker.StatusChecker._is_alive_icmp - то тест проходит как и ожидалось, почему не работает с "icmplib.async_ping"?