在python unittest中模拟选择性文件写入

在python unittest中模拟选择性文件写入,python,unit-testing,mocking,built-in,Python,Unit Testing,Mocking,Built In,我看了一下周围,但没有找到我要找的东西,我很确定这已经在别处得到了回答。我的函数中有两个文件写入,如下所示: def write_files(): with open("a.txt", 'w') as f_h: f_h.write("data1") with open("b.txt", 'w') as f_h: f_h.write("data2") from unittest.mock import patch, call, mock_open impo

我看了一下周围,但没有找到我要找的东西,我很确定这已经在别处得到了回答。我的函数中有两个文件写入,如下所示:

def write_files():
    with open("a.txt", 'w') as f_h:
      f_h.write("data1")
    with open("b.txt", 'w') as f_h:
      f_h.write("data2")
from unittest.mock import patch, call, mock_open
import unittest

class Tester(unittest.TestCase):
    def test_analyze(self):
        with patch("builtins.open", mock_open(read_data="data")) as mf:
           # mf.side_effect = [None, Exception()] ?
           write_files()

if __name__ == '__main__':
    unittest.main()
我如何有选择地模拟f_h.write(),以便其中一个返回异常,而另一个不返回异常?我试图设置副作用,但不清楚这是否合适。我试验过的测试代码如下所示:

def write_files():
    with open("a.txt", 'w') as f_h:
      f_h.write("data1")
    with open("b.txt", 'w') as f_h:
      f_h.write("data2")
from unittest.mock import patch, call, mock_open
import unittest

class Tester(unittest.TestCase):
    def test_analyze(self):
        with patch("builtins.open", mock_open(read_data="data")) as mf:
           # mf.side_effect = [None, Exception()] ?
           write_files()

if __name__ == '__main__':
    unittest.main()

两件事:必须模拟上下文管理器,例如
\uuuuu enter\uuuu
的结果,并且必须对模拟文件句柄的
write
方法产生副作用(例如
\uuuu enter\uuuu
调用的结果):


两件事:必须模拟上下文管理器,例如
\uuuuu enter\uuuu
的结果,并且必须对模拟文件句柄的
write
方法产生副作用(例如
\uuuu enter\uuuu
调用的结果):