我确信这是一个简单的修复,但是我想在PyCharm控制台 * 中查看日志消息,同时运行一个单元测试 *。我正在测试的模块有它们自己的日志记录器,通常我会设置一个根日志记录器来捕获某个级别的调试消息,并将其他日志传输到一个文件中。但是我不知道这是如何在单元测试中工作的。
我正在使用unittest2模块,并使用PyCharm的自动测试发现(可能是基于nose的,但我不知道)。
我试过修改运行配置,但似乎没有一种简单的方法来实现。
PyCharm文档在这里也不是特别有用,如果您在那里工作的话。
在编辑中:它确实看起来控制台捕捉到了关键级别的日志消息。我想知道是否有一种方法可以配置它来捕捉调试级别的消息。
这篇文章(Pycharm unit test interactive debug command line doesn't work)建议将-s
选项添加到构建配置中,但这并没有产生预期的结果。
7条答案
按热度按时间kxkpmulp1#
我找到的唯一解决方案是在文件顶部进行正常的日志记录设置,其中包含测试(假设您只运行一个测试或测试类):
logging.basicConfig(level=logging.DEBUG)
。确保将其放在大多数import语句之前,否则这些模块的默认日志记录将已经设置(这是一个很难弄清楚的问题!)。7y4bm7vi2#
我还需要在pycharm 2016.3.2中添加选项--nologcapture到nosetests作为参数
运行〉编辑配置〉默认值〉Python测试〉鼻测试:激活检查Prams选项并添加--nologcapture
pxiryf3j3#
在编辑组态中:
在pyCharm 2017.2.3中对我来说就像一个“魅力”
谢谢波特
xeufq47z4#
我的问题也是类似的,我在PyCharm中运行测试时只看到了警告级别或更高级别的消息。一位同事建议在
__init__.py
中配置日志记录器,它位于我的测试目录中。然后我可以简单地登录测试代码,如:
h79rfbju5#
我在更新Pycharm后突然遇到了这个问题。我一直在用
Unittest
运行器运行我的测试,突然Pycharm决定默认使用pytest
运行器。当我把默认的测试运行器改回Unittest
时,日志就像我预期的那样出现了。您可以在“项目设置/首选项”〉〉“工具”〉〉“Python集成工具”中更改默认测试运行程序
我假设添加
-nologcapture
标志(如其他答案中所述)可能也适用于我的情况,但我更喜欢由IDE公开的解决方案,而不是手动覆盖。顺便说一句,选择
Unittest
还解决了我在尝试运行测试时遇到的一个附加错误-No module named 'nose'k2fxgqgv6#
在问题中提到的-s选项组合中使用stream=sys.stdout添加StreamHandler对我来说确实有效。
Pycharm unit test interactive debug command line doesn't work
qrjkbowd7#
添加一个流处理程序,如果doctest或pytest正在运行,则指向sys.stdout: