在python单元测试中初始化记录器
我试图在构造函数中实例化记录器。但我得到了这个错误: ... TypeError:init()正好接受1个参数(给定2个)在python单元测试中初始化记录器,python,unit-testing,Python,Unit Testing,我试图在构造函数中实例化记录器。但我得到了这个错误: ... TypeError:init()正好接受1个参数(给定2个) 为什么会这样?如何正确实例化记录器?您正在覆盖\uuuu init\uuuu。您不能在这样的TestCase中执行此操作,因为您的测试用例将由测试运行程序实例化,并且传递给它的参数将是要运行的方法,因此您取消了所有需要执行的初始化(并且没有使用正确数量的参数) 如果你想做一些日志记录,你可以用一个方法,或者更可能是全局的方法来做;改为在设置方法中执行所有需要执行的操作。应允
为什么会这样?如何正确实例化记录器?您正在覆盖
\uuuu init\uuuu
。您不能在这样的TestCase
中执行此操作,因为您的测试用例将由测试运行程序实例化,并且传递给它的参数将是要运行的方法,因此您取消了所有需要执行的初始化(并且没有使用正确数量的参数)
如果你想做一些日志记录,你可以用一个方法,或者更可能是全局的方法来做;改为在
设置方法中执行所有需要执行的操作。应允许您对测试用例中的所有测试执行初始化,并且只执行一次。您可以尝试此操作
import logging
class TestMyClass(unittest.TestCase):
def __init__(self):
self.logger = logging.getLogger('MyClassLog')
def setUp(self):
但安装程序会针对每个测试用例运行。我不想为每个测试用例实例化我的记录器。如何避免这种情况?@Julian:您如何在全球范围内设置unittest日志记录?我从IntelliJ运行my,也通过“python3.2-m unittest discover”在命令行上运行,但安装程序会针对每个测试用例运行。我不想为每个测试用例实例化我的记录器。如何避免这种情况?
class TestMyClass(unittest.TestCase):
def __init__(self, methodName):
super(TestMyClass, self).__init__(methodName)
self.logger = logging.getLogger('MyClassLog')