在每个函数调用上显示docstrings

时间:2014-07-02 14:26:27

标签: python-3.x python-unittest docstring

假设我有这样的代码:

 class NewTestCase(unittest.TestCase, CommonMethods):

   def setUp(self):
      self.shortDescription()

   def test_01_sample test(self):
      """Testing something"""
      self.create_account(self.arg['account'])
      assert ...
   ...


 class CommonMethods():

   def create_account(self, account):
      """Creating account"""
      ...

 if __name__ == '__main__':
    unittest.main(verbosity=2, warnings='ignore')

我希望显示由我定义/创建的所有方法的文档字符串(“测试某些内容”和“创建帐户”),但执行仅显示“测试内容”。有提示吗?

1 个答案:

答案 0 :(得分:0)

也许在unittest模块中有一个选项,但我对此表示怀疑;否则,该模块将如何区分您的方法和函数以及各种库函数?

您可以做的是使用其他功能修改现有功能,以便在调用时打印Docstring和/或其他有用信息。您可以将其设为装饰器,或者在运行测试之前手动调用该函数。

这个应该'verbosify'给定类的所有方法(只是经过轻微测试!),你可以为各个函数或整个模块制作类似的方法。

def verbosify(clazz):
    for name in dir(clazz):
        attr = getattr(clazz, name)
        if not name.startswith("__") and callable(attr):
            def attr_verbose(*args, **kwargs):
                print("Calling", name, args, kwargs)
                print(attr.__doc__)
                return attr(*args, **kwargs)
            setattr(clazz, name, attr_verbose)

只需在verbosify(CommonMethods)阻止中致电main