Как заменить переменную внутри функции в unittest-pytest - PullRequest
0 голосов
/ 09 мая 2018

У меня проблема с методом замены переменной внутри метода, который я должен проверить, а именно:

def find_files(path):
    path_dir = os.listdir(path)
    ...

и для нужд теста я должен заменить path_dir с реального результата os.listdir на какой-то список тестов, т.е. ['whatever1.txt', 'whatever2.txt', 'whatever3.txt']

Как это сделать? BR, Damian

Ответы [ 2 ]

0 голосов
/ 09 мая 2018

Вы можете использовать mock.patch, чтобы установить возвращаемое значение для вашей переменной. Например

with patch('os.listdir') as mocked_listdir:
    mocked_listdir().return_value = ['.', '..']
    find_files(path)

или в качестве альтернативы вы можете установить побочный эффект

with patch('os.listdir') as mocked_listdir:
    mocked_listdir().side_effect = some_other_function
    find_files(path)
0 голосов
/ 09 мая 2018

Вы должны попробовать mock os.listdir для возврата данных фиктивного теста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...