Python unittest,如何在报告中显示TestCase的方法的文档字符串?

hl0*_*37_ 1 python python-unittest

问题标题是不言自明的。有没有办法

class Foo(TestCase):
  def test_bar(self):
    """
    a docstring
    """
Run Code Online (Sandbox Code Playgroud)

使UnitTest报告显示整个文档字符串?

我已经读过文档字符串的第一行将被打印(所以写

""" a docstring """
Run Code Online (Sandbox Code Playgroud)

没有换行符有效)

我读过这个问题:How to stop Python unittest from print test docstring?

但是,这是关于删除文档字符串,我不知道如何覆盖shortDescription()以显示完整的文档字符串。

ser*_*inc 7

这个我没试过

SO-linked question的答案中,它说

负责的方法是TestCase.shortDescription(),您可以在测试用例中覆盖它。

shortDescription来源如下:

doc = self._testMethodDoc 
return doc and doc.split("\n")[0].strip() or None
Run Code Online (Sandbox Code Playgroud)

所以你可以将第二行修改为

return doc
Run Code Online (Sandbox Code Playgroud)

屈服

class MyTests(unittest.TestCase):
    #  ....
    def shortDescription(self):
        doc = self._testMethodDoc 
        return doc
Run Code Online (Sandbox Code Playgroud)

如果您反对使用未记录的self._testMethodDoc,它是 的直接副本testMethod.__doc__,它是在TestCase.__init__()via创建的

testMethod = getattr(self, methodName)
Run Code Online (Sandbox Code Playgroud)

a 的变量很少TestCase。它们被重命名的可能性很小,但您可能会问作者(也来自来源):

 47  __author__ = "Steve Purcell" 
 48  __email__ = "stephen_purcell at yahoo dot com" 
Run Code Online (Sandbox Code Playgroud)