Показывать строки документов при каждом вызове функции
Допустим, у меня есть такой код:
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 ответ
Может быть, есть вариант для этого в unittest
модуль, но я сомневаюсь в этом; в противном случае, как этот модуль будет различать ваши методы и функции и все виды библиотечных функций?
Что вы можете сделать, это использовать другую функцию для изменения существующих функций, чтобы печатать их строку документации и / или другую полезную информацию при каждом вызове. Вы можете сделать это декоратором или просто вызвать функцию вручную перед запуском тестов.
Этот должен "детализировать" все методы данного класса (только слегка протестированные!), И вы можете сделать аналогичные для отдельных функций или целых модулей.
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
блок.