У меня есть функция, которая сначала проверяет, существует ли файл txt, и если он его не создает. Если файл txt уже существует, он считывает информацию. Я пытаюсь написать unittests, чтобы проверить, правильна ли логика функции. Я хочу исправлять такие вещи, как наличие файлов, создание файлов и чтение файлов. Функция, которая должна быть проверена выглядит следующим образом:Как издеваться над созданием текстовых файлов python2.7 в единичной структуре?
import json
import os.path
def read_create_file():
filename = 'directory/filename.txt'
info_from_file = []
if os.path.exists(filename):
with open(filename, 'r') as f:
content = f.readlines()
for i in range(len(content)):
info_from_file.append(json.loads(content[i]))
return info_from_file
else:
with open(filename, 'w') as f:
pass
return []
UnitTest выглядит следующим образом:
import unittest
import mock
from mock import patch
class TestReadCreateFile(unittest.TestCase):
def setUp(self):
pass
def function(self):
return read_create_file()
@patch("os.path.exists", return_value=False)
@mock.patch('directory/filename.txt.open', new=mock.mock_open())
def test_file_does_not_exist(self, mock_existence, mock_open_patch):
result = self.function()
self.assertEqual(result, (True, []))
ОШИБКА: ImportError: Импорт по имени файла не поддерживается.
или как это:
import unittest
import mock
from mock import patch
@patch("os.path.exists", return_value=False)
def test_file_not_exist_yet(self, mock_existence):
m = mock.mock_open()
with patch('__main__.open', m, create=True):
handle = open('directory/filename.txt', 'w')
result = self.function()
self.assertEqual(result, (True, {}))
ОШИБКА: IOError: [Errno 2] Нет такого файла или каталога: 'Каталог/filename.txt'
Как новичок я не могу показаться, чтобы получить мой голова вокруг решения, любая помощь очень ценится.
Спасибо