ошибка unittest: test_update () отсутствует 1 обязательный позиционный аргумент: 'mock_stdout' - PullRequest
0 голосов
/ 11 ноября 2018

Когда я использую unittest в Python, я получаю сообщение об ошибке:

test_update() missing 1 required positional argument: 'mock_stdout'

Ниже мой код для test_update:

def test_update(self, mock_stdout):
    """Test update information"""
    new_geo="CANADA"
    new_commodity= "SUGAR"
    new_value = "7.81"
    new_ref_date = "2018"
    new_vector ="v1574617"
    new_coordinate = "1.49"
    update = Modify()

    with mock.patch(
        'builtins.input',
        side_effect=[new_ref_date, new_geo, new_commodity,
                     new_vector, new_coordinate, new_value]):
      update.update()
      self.assertEqual(
          mock_stdout.getvalue(),
          "Update information for database\n" +
            "3 row(s) updated\n" + 
            "|2018|CANADA|SUGER|v1574617|1.49|7.81|\n" +
            "|2018|CANADA|SUGER|v1574617|1.49|7.81|\n" +
            "|2018|CANADA|SUGER|v1574617|1.49|7.81|\n" +
            "========================================\n")

1 Ответ

0 голосов
/ 05 декабря 2018

Как упоминалось в этом ответе на вопрос Передача аргументов юнит-теста Python , проблема здесь заключается в том, что вы пытаетесь передать аргумент mock_stdout функции ( def test_update(self, mock_stdout):). Попробуйте переместить определение mock_stdout за пределы функции, например:

mock_stdout = <fill this in>


def test_update(self):  # Removed mock_stdout from the list of arguments
    ...
...