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