Я узнаю о юнит-тестах.Я хочу издеваться над return_value при открытии файла.Но я получаю объект, а не ценность.
Я вижу много сообщений о возврате экземпляра класса с помощью mock_file (). Readfile =… а не mock_file.readfile =…, но я не могу заставить его работать.
Я использую python 3.6 с pytest 4.6.3
# In file Test_ReadFromFile.py
import pytest
from pytest import raises
from unittest.mock import MagicMock
from LineReader import readFromFile
def test_returnsCorrectString(monkeypatch):
mock_file = MagicMock()
mock_file.readLine = MagicMock()
mock_file.readLine.return_value = "test line"
mock_open = MagicMock(return_value=mock_file)
monkeypatch.setattr("builtins.open", mock_open)
result = readFromFile("blah")
mock_open.assert_called_once_with("blah", 'r')
assert result == "test line"
# In file LineReader.py
import os
def readFromFile(filename):
infile = open(filename, "r")
line = infile.readline()
return line
Я получаю следующее сообщение об ошибке:
AssertionError: assert <MagicMock name='mock.readline()' id='2003604533768'> == 'test line'
Есть идеи, в чем проблема?Thx