我正在尝试在python单元测试中模拟readlines()
对象。到目前为止,我是
class Sample:
def read_file(filename):
with open(filename, "r") as f:
lines = f.readlines()
我想为readlines()对象编写一个单元测试。 到目前为止,我已经提出了以下建议。
TEST_DATA = "test\ntest2\n"
@mock.patch("builtins.open")
def test_open(mock_open):
mock_open.side_effect = [mock_open(read_data=TEST_DATA).return_value]
assert mock_open.side_effect == Sample.read_file()
我的问题是,如何断言mock_open
的返回值与read_file
类中实际Sample
函数的返回值相同?这是我失败的地方,无法继续前进。任何帮助对此表示感谢!预先谢谢你!
答案 0 :(得分:0)
在unittest.mock docs中有一个示例可以为您提供帮助
这是适用于您的代码的docs示例。
from unittest.mock import patch
class Sample:
def read_file(filename):
with open(filename, "r") as f:
lines = f.readlines()
return lines
TEST_DATA = "test\ntest2\n"
def test_open(mock_open):
with patch('__main__.open', mock_open(read_data=TEST_DATA)) as m:
s = Sample()
res = s.read_file('foo')
assert res == TEST_DATA