Python单元测试

Python单元测试,python,unit-testing,Python,Unit Testing,我有一个需要支持的情况: 我有一个名为logger_1.py的程序,它返回一个logger类 我的另一个程序是data_extract.py,其中导入了logger_1.py脚本 现在我必须编写一个单元测试用例 import unittest from data_extract import initl class data_extract(unittest.TestCase) def test_initl(self): self.assertEqual(

我有一个需要支持的情况:

我有一个名为logger_1.py的程序,它返回一个logger类

我的另一个程序是data_extract.py,其中导入了logger_1.py脚本



现在我必须编写一个单元测试用例

import unittest
from data_extract import initl

class data_extract(unittest.TestCase)

      def test_initl(self):
          self.assertEqual(initl("Special"), "Special sometext")
现在,当运行测试用例时,我得到的记录器没有定义


请指导如何模拟/修补或忽略单元测试用例中的记录器。

在测试环境中,方法
Main()
可能从未调用过,因此方法
initl
中的变量
logger
未定义。模拟变量比模拟函数要复杂一些,因此首先我要更改
initl
,这样变量
logger
总是被定义的,并且可以通过模拟
gethloger
来更改行为:

从logger_1.py导入getHLogger
全局记录器
记录器=getHLogger(“dd_12”)
def初始值(abc):
logger.info(“初始化启动”)
newdata=abc+“sometext”
返回新数据
def Main():
logger.info(“已启动”)
retu=initl(“你好”)
然后您可以模拟
gethloger

导入单元测试
从数据提取导入初始值
类MockLogger()
def信息(msg):
通过
def模拟获取记录器(某些参数):
返回模拟记录器()
类数据提取(unittest.TestCase)
@unittest.mock.patch(“getHLogger”,mock\u get\u logger)
def测试初始值(自):
self.assertEqual(初始(“特殊”),“特殊文本”)
import unittest
from data_extract import initl

class data_extract(unittest.TestCase)

      def test_initl(self):
          self.assertEqual(initl("Special"), "Special sometext")