В моей программе есть функция, которая выводит список всех файлов по заданному пути, и я пытаюсь написать тест, который проходит, если в указанном пути нет файлов (пустой вывод, т.е. []
), который я изучаюнасчет крепежа pytest
это сделать.Вот что я написал:
def test_no_dirs(mocker):
mocker.patch('os.listdir')
assert get_list() #get_list returns ['abc.json', 'test.json', 'test2.json']
os.listdir.assert_called_with('/etc/app_data/',stdout=[])
Сначала я использовал mocker в качестве параметра, а затем исправил функцию os.listdir
.os.listdir
вызывается в get_list()
, но я не знаю, как изменить return
значение os.listdir
на пустой список, []
- на пустую директорию.
Когда я запускаю вышеЯ получаю следующую ошибку:
E AssertionError: Expected call: listdir('/etc/app_data/', stdout='[]')
E Actual call: listdir('/etc/app_data/')
E
E pytest introspection follows:
E
E Kwargs:
E assert {} == {'stdout': '[]'}
E Right contains more items:
E {'stdout': '[]'}
E Full diff:
E - {}
E + {'stdout': '[]'}
Как я могу издеваться над os.listdir
, чтобы вернуть пустое значение и пройти тест?
Если я уберу stdout=[]
, тест PASS
но на самом деле я не делаю то, что хочу, то есть, когда нет файлов.
Это код для get_list()
import os
def get_list():
return os.listdir('/etc/app_data/')