Я пытаюсь проверить метод, который записывает в файл время буксировки с помощью 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 ()?