Я работаю в приложении Django, которое делает что-то похожее, но пока я это делаю, я прокомментирую пример использования, который вы представили здесь:
Я должен быть уверен, что выполнение одной вещи в одном месте не повлияет на другую сторону проекта ...
Вы наверняка могли бы написать тесты с некоторыми фиктивными обработчиками сигналов, чтобы узнать, вызывает ли выполнение определенного кода нежелательное поведение, например:
# I use pytest, put this example is suitable also for
# django's TestCase and others
class TestSome:
# For Django TestCase this would be setUp
def setup_method(self, test_method):
self.singals_info = []
def dummy_handler(*args, **kwargs):
# collect_info is a function you must implement, it would
# gather info about signal, sender, instance, etc ... and
# save that info in (for example) self.signals_info.
# You can then use that info for test assertions.
self.collect_info(*args, **kwargs)
# connect your handler to every signal you want to control
post_save.connect(dummy_handler)
def test_foo():
# Your normal test here ...
some_value = some_tested_function()
# Check your signals behave
assert self.signals_behave(self.signals_info)
Почему это лучше, чем иметь скрипт, который показывает цепочку событий?
Что ж, как вы говорите, когда возникает необходимость в таких вещах, это потому, что размер проекта очень велик, и если вы используете инструмент, о котором просите, вы можете получить такой результат:
Save A -> Creates B -> Creates C
Save B -> Creates D
Save B -> Creates C
.
.
.
# Imagine here 3 or 4 more lines.
В конечном итоге вы решите головоломку каждый раз, когда захотите добавить какой-нибудь код, который что-то сохраняет / изменяет.
Однако ...
Было бы лучше написать ваш код, а затем некоторые тесты не пройдут (решая для вас загадку) и покажут вам точно , где ваш код будет работать неправильно.
Вывод:
Выполните эти тесты, и ваша жизнь станет проще.
Лучший сценарий с использованием тестов: Напишите свой код, и если тест не пройден, вы готовы приступить к следующей задаче программирования.
Худший сценарий с использованием тестов: Напишите ваш код, некоторые тесты не пройдены, поскольку вы знаете, где именно ваш код сломался, просто исправьте его.
Лучший сценарий с использованием инструмента: Анализируйте вывод инструмента, пишите код, все в порядке.
Наихудший сценарий с использованием инструмента: Анализировать вывод инструмента, писать код, что-то не получается, повторять до тех пор, пока все в порядке.
Итак, такой инструмент был бы полезен? Конечно, но это не тот инструмент, который гарантирует, что все хорошо, используйте для этого тесты.