유닛테스트 signal disable

hyuckhoon.ko·2020년 11월 11일
0

투스콥스오브 장고 라는 책에서는
시그널의 사용을 금기시하다시피 했지만, 차용하게 됐다.

해당 시그널이 작동되는 플로우는 다음과 같다.

  • 사용자가 수거신청을 한다.
  • consignment 객체가 생성된다.
  • 생성된 직후(post_save) -> 슬랙, 카카오 메시지 발송

from django.db.models import signals


signals.post_save.disconnect(send_product_kakao_alarm, sender=models.Consignment)

유닛테스트에서 매번 signal을 active할 순 없다.

단위(Unit)테스트의 취지에 맞지도 않을 뿐더러,

매번 회사 슬랙 채널로 테스트 계정의 수거신청 내용이 발송되기 때문이다.

signals.post_save 에 대해 다시 disconnect 메소드로 접근한다.

첫 번째 인자엔 해당 시그널 함수명을,
두 번째 인자엔 모델명.

"Consignment 모델의 객체가 생성될 때(post_save),
send_product_kakao_alarm 함수가 작동된다.



유닛테스트는 아래와 같이,
위의 매커니즘을 "disconnect"한다.

def test_login_user_can_access_to_on_mypage(self):
    """유저 마이페이지 access(각 상태별 제품 추가)"""
  
    signals.post_save.disconnect(send_product_kakao_alarm, sender=models.Consignment)

    --(이하 코드 생략)--



참고자료: https://stackoverflow.com/questions/33402842/how-can-i-disconnect-a-django-signal

0개의 댓글