Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python单元测试中初始化记录器_Python_Unit Testing - Fatal编程技术网

在python单元测试中初始化记录器

在python单元测试中初始化记录器,python,unit-testing,Python,Unit Testing,我试图在构造函数中实例化记录器。但我得到了这个错误: ... TypeError:init()正好接受1个参数(给定2个) 为什么会这样?如何正确实例化记录器?您正在覆盖\uuuu init\uuuu。您不能在这样的TestCase中执行此操作,因为您的测试用例将由测试运行程序实例化,并且传递给它的参数将是要运行的方法,因此您取消了所有需要执行的初始化(并且没有使用正确数量的参数) 如果你想做一些日志记录,你可以用一个方法,或者更可能是全局的方法来做;改为在设置方法中执行所有需要执行的操作。应允

我试图在构造函数中实例化记录器。但我得到了这个错误: ... TypeError:init()正好接受1个参数(给定2个)


为什么会这样?如何正确实例化记录器?

您正在覆盖
\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')