Pytest tmpdir записывает в конец файла - PullRequest
0 голосов
/ 26 сентября 2019

Я пытаюсь проверить метод, который записывает в файл время буксировки с помощью pytest.Моя проблема в том, что файл, который я создал с помощью tmpdir, работает так, как будто он открыт с open(„filename“, „w“), и поэтому переопределяет первую запись.Но мне нужно, чтобы он действовал так, как будто он открыт с open(„filename“, „w+“).Поэтому предыдущие записи не переопределяются.

Пример кода:

import pytest

def read_tow_times(file):
    file.write("Monty Python's")
    file.write("flying circus")

@pytest.fixture
def mock_data_file(tmpdir):
    return tmpdir.mkdir("test_path").join("file_to_copy1.data")

def check_lines(file, text):
    for count,line in enumerate(file.readlines()):
        if not line.strip() == text[count].strip():
            return False
    return True

def test_read_tow_times(mock_data_file):
    a = mock_data_file
    read_tow_times(a)
    text = ["Monty Python's", "flying circus"]
    assert check_lines(a, text) == True

Код ошибки Pytest:

========== test session starts =====================
platform linux -- Python 3.4.9, pytest-4.6.3, py-1.8.0, pluggy-0.12.0 -- 
/usr/bin/python3.4
cachedir: .pytest_cache
rootdir: /home/a05922/rumprobieren/downsize 
code/fehler_tmpdir_schreibt_nicht_zweimal
collected 1 item

test_schreib_zweimal.py::test_read_tow_times FAILED                                                                                                           
[100%]

===================== FAILURES ===============================
____________________test_read_tow_times ______________________

mock_data_file = local('/tmp/pytest-of-a05922/pytest- 
74/test_read_tow_times0/test_path/file_to_copy1.data')

    def test_read_tow_times(mock_data_file):
        a = mock_data_file
        read_tow_times(a)
        text = ["Monty Python's", "flying circus"]
>       assert check_lines(a, text) == True
E       assert False == True
E         -False
E         +True

test_schreib_zweimal.py:21: AssertionError
======= 1 failed in 0.34 seconds =================

Как мне заставить tmpdir сделать меня файловым объектомчто не перезаписывается при вызове .write ()?

...