Как написать unittest.mock для input функции?
Основная функция для теста:
async def start_script():
script = int(input("Введите:\n1 для запуска парсера видео\n2 для запуска загрузчика видео: \n"))
if script == 1:
number = int(input("Введите количество видео для парсинга: "))
# await main.info_videos(number=number)
elif script == 2:
number_pc = int(input("Введите номер ПК: "))
count_video = int(input("Количество повторных публикаций: "))
print("Введите диапазон времени для публикации (в минутах)")
number1 = int(input("От (в минутах): "))
number2 = int(input("До (в минутах): "))
await get_video_process(number1, number2, number_pc, count_video)
else:
print("Ошибка ввода!")
await start_script()
asyncio.run(start_script())
Unittest для этого кода:
import unittest
from unittest.mock import patch
from web import start_script
class TestStartScript(unittest.TestCase):
@patch("builtins.input", side_effect=["1", "5"])
def test_start_script(self, mock_input):
self.assertIsNone(start_script())
if __name__ == "__main__":
unittest.main()
Запускаю этот тест, и открывается консоль для ввода данных, хотя такого не должно быть.
Как это решить?