Во время одного из недавних обзоров кода я наткнулся на проблему, которую не сразу заметили - вместо assertEqual()
использовался assertTrue()
, что в основном привело к тесту, который ничего не тестировал. Вот упрощенный пример:
from unittest import TestCase
class MyTestCase(TestCase):
def test_two_things_equal(self):
self.assertTrue("a", "b")
Проблема в том, что тест пройдет; и технически код действителен, так как assertTrue
имеет этот необязательный аргумент msg
(который получает значение "b"
в этом случае).
Можем ли мы лучше, чем полагаться на человека, просматривающего код, чтобы выявить такие проблемы? Есть ли способ автоматически обнаружить его, используя статический анализ кода с помощью flake8
или pylint
?