Python 如何创建被测试函数中对象使用的内置函数mock
我想从我的Python应用程序中测试一个函数。代码如下所示:Python 如何创建被测试函数中对象使用的内置函数mock,python,unit-testing,mocking,Python,Unit Testing,Mocking,我想从我的Python应用程序中测试一个函数。代码如下所示: import unittest from unittest.mock import patch from mock import MagicMock import configparser def read_config_sections(filename): cp = configparser.ConfigParser() cp.read(filename) sections = list()
import unittest
from unittest.mock import patch
from mock import MagicMock
import configparser
def read_config_sections(filename):
cp = configparser.ConfigParser()
cp.read(filename)
sections = list()
for section in cp.sections():
sections.append(section)
return sections
class TestReadConfigSection(unittest.TestCase):
@patch("__main__.open", MagicMock(return_value="[SECTION1]"))
def test_read_config_sections(self):
sections = read_config_sections("somename.ini")
self.assertEqual(["SECTION1"], sections)
if "__main__" == __name__:
unittest.main()
我想模拟ConfigParser
方法用于读取配置的open
函数。有人能告诉我怎么做好吗?当我运行上面的代码时,变量sections
是一个空列表
或者您可能对如何测试此函数有更好的想法。我相信您想要的是
\uuu内置\uuuuuuuu.open
而不是\uuuuuu.open
您也可以使用该函数
import configparser
import io
from mock import patch, mock_open
import unittest
def read_config_sections(filename):
cp = configparser.ConfigParser()
cp.read(filename)
sections = list()
for section in cp.sections():
sections.append(section)
return sections
class TestReadConfigSection(unittest.TestCase):
@patch("builtins.open", return_value=io.StringIO("[SECTION1]"))
def test_read_config_sections(self, mock_open):
sections = read_config_sections("somename.ini")
self.assertEqual(sections, ["SECTION1"])
if "__main__" == __name__:
unittest.main()
可在此处找到解决方案:
谢谢你的帮助
致以最诚挚的问候。当我使用builtins.open时,出现一个错误ImportError:没有名为“builtins”的模块Ok。相反,main.open我必须使用builtins.open,但是当我对它进行di时,会出现异常AttributeError:exit