Показывать строки документов при каждом вызове функции

Допустим, у меня есть такой код:

 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 блок.

Другие вопросы по тегам