假设我有这样的代码:
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')
我希望显示由我定义/创建的所有方法的文档字符串(“测试某些内容”和“创建帐户”),但执行仅显示“测试内容”。有提示吗?
答案 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
。