Mam aplikację Django o nazwie "publisher", łączy się z różnymi sygnałami w moim projekcie django, a kiedy je otrzyma, wysyła wiadomość do kolejki rabbitmq. Chciałbym móc przetestować, czy mój kod instalacyjny łączy się z prawidłowymi sygnałami.Testowanie, że podłączyłem się do konkretnego sygnału w Django
Moja aplikacja struktura wygląda następująco:
publisher
- __init__.py
- signals.py
- tests.py
mój __init__.py wygląda następująco:
import signals
i mojego signals.py:
def receiver_function(*args, **kwargs):
#Does rabbitmq stuff
my_interesting_signal.connect(receiver_function)
ja nie pomyślał o łatanie funkcja odbiornika i sprawdzenie, czy próbka została wywołana, gdy wysłałem sygnał:
tests.py:
class SignalsTeste(TestCase):
def_test_connection(self):
with patch('publisher.signals.receiver_function') as receiver_mock:
my_interesting_signal.application_created.send(None)
self.assertEquals(receiver_mock.call_count, 1)
Jednak ponieważ moduł sygnały są importowane, a więc połączenia sygnałowe są wykonane przed prowadzone są testy, takie podejście nie działa jak połączenia są wykonane przed funkcja jest załatany ......
Czy ktoś może zaproponować alternatywną strategię?
Nie wiem, czy mam to proste, ale śledzę moje sygnały zapisu do dziennika w funkcji odbiornika def function_function (* args, ** kwargs): – PepperoniPizza