Отметка времени переопределения (макета) в openpyxl - PullRequest
0 голосов
/ 12 сентября 2018

Я создал функцию, которая записывает список списков строк в файл Excel, и теперь я хочу написать для него unittest, в котором я сравниваю выходной файл со справочным выходным файлом.Однако, когда я сохраняю его, в файле сохраняется реальная временная метка, поэтому, когда я сравниваю два файла (которые являются двоичными), они не совпадают.Как можно смоделировать метку времени при создании файла Excel, чтобы я мог сравнить записанный файл Excel с эталонным файлом?

Этот тестовый пример показывает, чего я хочу достичь.Без sleep(2) все работает.Когда я открываю сгенерированный файл Excel с помощью TextWrangle, я вижу в docProps / core.xml следующий тег: <dcterms:modified xsi:type="dcterms:W3CDTF">2018-09-12T13:44:57Z</dcterms:modified>.Это временная метка, которую я хочу смоделировать.

def test_that_same_input_leads_to_same_file(self):
    def write_xlsx(filename: str):
        from openpyxl import Workbook
        workbook = Workbook()
        worksheet = workbook.active
        worksheet.title = 'Matrix'
        for line in content:
            worksheet.append(line)
        workbook.save(filename)
        return filename
    content = [['a', 'b', 'c', 'd'], [None, 1, 2, 3], [1, 2, 3, 4]]
    file_1 = write_xlsx('file_1.xlsx')
    sleep(2)
    file_2 = write_xlsx('file_2.xlsx')
    import filecmp
    self.assertTrue(filecmp.cmp(file_1, file_2))

РЕДАКТИРОВАТЬ

Если я выполняю функцию в оболочке патча, то эта функция проходит.Однако, когда я не создаю файл file_2 и не сравниваю его с предыдущим прогоном, он все равно не работает.Требуется одна временная метка для обоих файлов за один прогон, но другая временная метка в другом прогоне.

from django.utils import timezone
MY_DATE = timezone.datetime(year=2017, month=1, day=2, hour=3, minute=4, second=5, tzinfo=timezone.utc)
with patch('time.time', return_value=MY_DATE.timestamp()):
    # Create Excel file here
...