Юнит-тест для скрипта Python3 с использованием unittest ⇐ Python
-
Anonymous
Юнит-тест для скрипта Python3 с использованием unittest
У меня есть небольшой скрипт Python3. Что-то вроде этого
импортировать систему содержимое = sys.stdin.read() распечатать (содержание) Для этого мне нужно написать модульный тест, используя import unittest. Я пытаюсь понять, как имитировать стандартный ввод с помощью unittest.
Я нашел здесь несколько статей
и здесь, но я все равно не смог с этим справиться, потому что после запуска тестовых скриптов программа ожидает от меня ввода стандартного ввода.
Не могли бы вы помочь мне переписать этот код (или написать другой) для тестирования моего скрипта
импортировать модульный тест из патча импорта unittest.mock импортировать модуль_under_test класс MyTestCase(unittest.TestCase): защита setUp(self): # raw_input не изменяется перед тестом утверждать, что модуль_under_test.raw_input равен __builtins__.raw_input защита test_using_with(self): входные_данные = "123" ожидаемый = int (входные_данные) с patch.object(module_under_test, "raw_input", create=True, return_value=ожидается): # create=True необходим, поскольку raw_input не находится в глобальных переменных # модуль_under_test, но на самом деле находится в __builtins__ . фактический = модуль_under_test.function() self.assertEqual(ожидаемое, фактическое) @patch.object(module_under_test, "raw_input", create=True) защита test_using_decorator(self, raw_input): raw_input.return_value = input_data = "123" ожидаемый = int (входные_данные) фактический = модуль_under_test.function() self.assertEqual(ожидаемое, фактическое) защита TearDown (сам): # необработанный ввод восстанавливается после теста утверждать, что модуль_under_test.raw_input равен __builtins__.raw_input если __name__ == "__main__": unittest.main()
У меня есть небольшой скрипт Python3. Что-то вроде этого
импортировать систему содержимое = sys.stdin.read() распечатать (содержание) Для этого мне нужно написать модульный тест, используя import unittest. Я пытаюсь понять, как имитировать стандартный ввод с помощью unittest.
Я нашел здесь несколько статей
и здесь, но я все равно не смог с этим справиться, потому что после запуска тестовых скриптов программа ожидает от меня ввода стандартного ввода.
Не могли бы вы помочь мне переписать этот код (или написать другой) для тестирования моего скрипта
импортировать модульный тест из патча импорта unittest.mock импортировать модуль_under_test класс MyTestCase(unittest.TestCase): защита setUp(self): # raw_input не изменяется перед тестом утверждать, что модуль_under_test.raw_input равен __builtins__.raw_input защита test_using_with(self): входные_данные = "123" ожидаемый = int (входные_данные) с patch.object(module_under_test, "raw_input", create=True, return_value=ожидается): # create=True необходим, поскольку raw_input не находится в глобальных переменных # модуль_under_test, но на самом деле находится в __builtins__ . фактический = модуль_under_test.function() self.assertEqual(ожидаемое, фактическое) @patch.object(module_under_test, "raw_input", create=True) защита test_using_decorator(self, raw_input): raw_input.return_value = input_data = "123" ожидаемый = int (входные_данные) фактический = модуль_under_test.function() self.assertEqual(ожидаемое, фактическое) защита TearDown (сам): # необработанный ввод восстанавливается после теста утверждать, что модуль_under_test.raw_input равен __builtins__.raw_input если __name__ == "__main__": unittest.main()
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
Мобильная версия