Django - 测试失败时记录

Mat*_*o12 5 python django console logging

我在Django中有很多单元测试,如果测试失败,我经常需要查看日志(如果可能的话,在控制台中)。我无法真正使用日志文件,因为它变得非常混乱。
\n我现在所做的是:激活 中的控制台日志记录settings.py,并且仅运行一项特定测试。我希望有一种更方便的方法来做到这一点。我只想查看失败的测试所记录的内容,而不是完整的日志。

\n\n

编辑:尽管答案已发布 \xe2\x80\x94 并且我已接受它 \xe2\x80\x94 我不太满意。我只想查看失败测试的日志输出。我一直在寻找类似PHPUnit提供的解决方案。它捕获完整的输出(用于日志记录+打印),并且仅stdout在测试失败时才将其写入。

\n

Mat*_*o12 1

好吧,我刚刚想出了如何解决它。
显然有一个-b选项可以“缓冲输出”,除非运行单元测试时测试失败。如果你的tests.py文件执行的话,使用起来非常容易unittest.main()。只要输入python tests.py -b,完整的输出就会被缓冲,除非测试失败。

...........F
Stdout:
OK :)
OK :)

======================================================================
FAIL: testStr (__main__.MyTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "tests.py", line 93, in testStr
    self.fail()
AssertionError: None

Stdout:
OK :)
OK :)

----------------------------------------------------------------------
Ran 12 tests in 0.005s
Run Code Online (Sandbox Code Playgroud)

在这种情况下,每个测试都会向标准输出打印一些内容,但只打印最后一个(显示失败的测试)。由于日志也可以打印到控制台(参见@Thomas的回答),因此您只会看到相关日志。