Как проверить правильность сохраненного CSV-файла - PullRequest
0 голосов
/ 02 февраля 2019

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

Ответы [ 2 ]

0 голосов
/ 02 февраля 2019

Протестируйте фрейм данных непосредственно перед сохранением его в файл CSV.Могут быть полезны тестовые сценарии NumPy и Функции тестирования Pandas .Если вам кажется, что вам нужно протестировать сам CSV-файл, вы на самом деле не доверяете функции to_csv() от pandas.В таком случае лучше всего просмотреть юнит-тесты панд , и, если вы чувствуете, что его не хватает, сделайте запрос на удаление, чтобы дополнить его тестами, которые, по вашему мнению, отсутствуют.

0 голосов
/ 02 февраля 2019

.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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...