Как проверить правильность сохраненного файла csv

У меня есть небольшая функция, которая ничего не возвращает, но вместо этого создает файл 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)

Распечатайте перед сохранением

anky 02.02.2019 18:25

я не хочу это печатать

maslak 02.02.2019 18:28

Что вы передаете параметрам input и output?

wwii 02.02.2019 18:31

пути входного и выходного файла

maslak 02.02.2019 18:33
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
4
1 237
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

.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. Тогда лучший способ действий — просмотреть модульные тесты панд, и если вы чувствуете, что этого не хватает, отправьте запрос на включение, чтобы изменить его с тестами, которые, по вашему мнению, отсутствуют.

Другие вопросы по теме