相关疑难解决方法(0)

Python:模拟上下文管理器

我不明白为什么我不能在这个例子中模拟NamedTemporaryFile.name:

from mock import Mock, patch
import unittest
import tempfile

def myfunc():
    with tempfile.NamedTemporaryFile() as mytmp:
        return mytmp.name

class TestMock(unittest.TestCase):
    @patch('tempfile.NamedTemporaryFile')
    def test_cm(self, mock_tmp):
        mytmpname = 'abcde'
        mock_tmp.__enter__.return_value.name = mytmpname
        self.assertEqual(myfunc(), mytmpname)
Run Code Online (Sandbox Code Playgroud)

测试结果如下:

AssertionError: <MagicMock name='NamedTemporaryFile().__enter__().name' id='140275675011280'> != 'abcde'
Run Code Online (Sandbox Code Playgroud)

python mocking

50
推荐指数
4
解决办法
2万
查看次数

标签 统计

mocking ×1

python ×1