Я написал тесты для нескольких функций, некоторые из этих функций требуют ввода от пользователя. Я использую mock.patch из библиотеки unittest, чтобы высмеивать пользовательский ввод.
class TestCodes(unittest.TestCase):
@mock.patch('builtins.input', side_effect=[1])
def testNames(self, mock_input):
"""
Tests function 1
"""
self.assertEqual(functionOne('input'), 1337)
@mock.patch('builtins.input', side_effect=[-1])
def testRepeater(self, mock_input):
"""
Tests that the output is equal to the input
"""
self.assertEqual(functionTwo('test1'), -1)
Все это прекрасно работает и прекрасно (Ran 2 tests in 0.018s
). Тем не менее, когда я добавляю другой тест, который не использует ложный ввод, unittest пропускает все тесты, которые требуют ввода (см. Ниже)
class TestCodes(unittest.TestCase):
@mock.patch('builtins.input', side_effect=[1])
def testNames(self, mock_input):
"""
Tests function 1
"""
self.assertEqual(functionOne('input'), 1337)
@mock.patch('builtins.input', side_effect=[-1])
def testRepeater(self, mock_input):
"""
Tests that the output is equal to the input
"""
self.assertEqual(functionTwo('test1'), -1)
def testFunniness(self):
self.assertEqual(functionThree('test4'), 42)
Ran 1 test in 0.007s