Python unittest, тесты без ввода пропускаются - PullRequest
0 голосов
/ 08 января 2020

Я написал тесты для нескольких функций, некоторые из этих функций требуют ввода от пользователя. Я использую 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

...