我正在尝试将单元测试写入使用readlines从文件读取的类init:
TEST_DATA = "foo\nbar\nxyzzy\n"
with patch("my.data.class.open", mock_open(read_data=TEST_DATA), create=True)
f = Foo("somefilename")
self.assertEqual(.....)
包括健全性检查等。
现在我正在尝试创建一个模拟对象,允许我测试这里发生的事情。
我尝试这样的事情:
["foo\nbar\nxyzzy\n"]
问题是,当我查看f.data时,只有一个元素:
{{1}}
这意味着无论发生什么,都没有分成线但被视为一条线。如何强制换行在模拟数据中发生?
答案 0 :(得分:1)
这不适用于班级名称
with patch("mymodule.class_name.open",
但是这可以通过直接模拟内置函数来实现,builtins.open
用于python3
@mock.patch("__builtin__.open", new_callable=mock.mock_open, read_data=TEST_DATA)
def test_open3(self, mock_open):
...
或通过模拟模块方法
而没有类 def test_open(self):
with patch("mymodule.open", mock.mock_open(read_data=TEST_DATA), create=True):
...