Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.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_Python 3.x_Python Unittest - Fatal编程技术网

python单元测试用例中的忽略记录器函数

python单元测试用例中的忽略记录器函数,python,python-3.x,python-unittest,Python,Python 3.x,Python Unittest,我正在为一些python程序编写测试用例。我使用了自定义记录器功能 logger.info("Some text") logger.error("some text") 现在,记录器是从其他程序创建的对象。我有一个名为“logger_1.py”的程序,我正在当前程序中导入该程序以创建一个logger对象 from logger_1 import getlogger global logger logger = getlogger("addaccess", "_log) 在我的单元测试用例中

我正在为一些python程序编写测试用例。我使用了自定义记录器功能

logger.info("Some text")
logger.error("some text")
现在,记录器是从其他程序创建的对象。我有一个名为“logger_1.py”的程序,我正在当前程序中导入该程序以创建一个logger对象

from logger_1 import getlogger

global logger
logger = getlogger("addaccess", "_log)
在我的单元测试用例中,我得到的是未定义的记录器


如何跳过已进行单元测试的函数中以logger开头的语句,或者以任何其他方式模拟或修补程序函数中的所有logger语句?

我看到了三个选项:

  • 不要改变任何事情。让记录器记录并忽略它产生的任何输出。不管怎样,开发/测试/登台环境都应该记录到非生产系统上,所以输出应该可以不用太多考虑就被丢弃。出于完整性的考虑,我主要使用此选项,但对于小型或不重要的系统,这是一个有效的解决方案。在您的情况下,这也不起作用,因为在测试期间,
    logger_1.py
    似乎不可用

  • 更改创建记录器的代码,或者在本例中从另一个位置导入它,以便它使用不同的测试特定记录器和输出位置。不过,捕获执行环境(命令行、导入等)可能有点棘手。例如,在我们的系统中,我们通常包括

    如果名称=“\uuuuu main\uuuuuuuu”:
    #用记录器做些什么
    
    如果从命令行调用文件而不是导入到测试套件中,则记录器将指向其他位置

  • 您可以使用虚拟记录器模拟每个测试方法的记录器:

    来自unittest导入模拟,TestCase
    创建虚拟记录器():
    #创建并返回一个虚拟记录器
    通过
    SomethingTests(测试用例):
    @补丁(“getlogger”,创建虚拟记录器)
    测试方法记录某事(自我):
    通过
    

  • 简而言之,如何跳过logger语句或任何其他关于为Python3.xThanks创建单元测试用例的语句供您参考。然而,我仍然面临着这个问题。让我详细介绍一下过程,以便您能清楚地提出建议。谢谢您的留言。然而,我仍然在挣扎。我不能在这里添加太多评论,因此创建了一个新主题来跟踪它。