У меня есть небольшая функция, которая ничего не возвращает, но вместо этого создает файл csv. Я хотел бы протестировать его, если данный выходной CSV-файл содержит правильные данные. Как я могу этого добиться?
функция
def create_csv(input, output)
df = pd.read_csv(input, names=['number1', 'number2'])
df.number1 *= 2
df.number2 *= 5
df.to_csv(output, index=False, header=False)
я не хочу это печатать
Что вы передаете параметрам input и output?
пути входного и выходного файла






.to_csv и .read_csv принимают как буферы, так и пути к строкам. Документы для этих методов предлагает использовать io.StringIO в качестве альтернативы открытому файлу или пути к файлу.
В модульном тесте используйте объекты io.StringIO для передачи функции во время теста. Что-то вроде этого для простого теста функции
import unittest, io
class TestOne(unittest.TestCase):
def setUp(self):
s = '''3,4\n2,1\n5,6'''
self.fakecsv = io.StringIO(s)
self.fakefile = io.StringIO()
self.result = '''6,20\n4,5\n10,30\n'''
def test_create(self):
create_csv(self.fakecsv, self.fakefile)
self.fakefile.seek(0)
self.assertEqual(self.fakefile.read(), self.result)
Протестируйте фрейм данных непосредственно перед его сохранением в CSV-файле. Скрипты тестирования NumPy и Тестовые функции Pandas могут быть полезны. Если вы чувствуете, что вам нужно протестировать сам файл CSV, вы на самом деле не доверяете функции to_csv() pandas. Тогда лучший способ действий — просмотреть модульные тесты панд, и если вы чувствуете, что этого не хватает, отправьте запрос на включение, чтобы изменить его с тестами, которые, по вашему мнению, отсутствуют.
Распечатайте перед сохранением