как не запустить задачу сельдерея в `тесте python manage.py` - PullRequest
0 голосов
/ 05 марта 2019

У меня есть модель. Я отправляю электронную почту и смс пользователю в post_save сигнал. Я создаю модель несколько раз, поэтому она отправляет электронную почту и смс несколько раз.

Я планирую написать новый тест для проверки смс и электронной почты.

def send_activation_mail_sms(sender, instance, created, **kwargs):
    if created :
        mobile_activation = UserMobileActivation.objects.create(user=instance,randomword=randomword(50),ref=ref)
        email_activation = UserEmailActivation.objects.create(user=instance,randomword=randomword(50),ref=ref)
        url_email = "{0}view/v1/email/activation/{1}/".format(HOSTNAME,email_activation.randomword)             short_url_email = url_shortener(long_url_email)
        url_sms = "{0}view/v1/mobile/activation/{1}".format(HOSTNAME,mobile_activation.randomword) 
        app.send_task("apps.tasks.send_sms",
                      args=[TEXTLOCAL_APIKEY,mobile_activation.stockuser.user.username ,'TXTLCL','Activate your mobile here {0}'.format(url_sms)])
        app.send_task("apps.tasks.send_email",
                      args=[email_activation.user.user.email, EMAIL_VERIFICATION_SUBJECT,
                            EMAIL_VERIFICATION_TEMPLATE, {"host": HOSTNAME, "verify_email_url": url_email}])

Я передаю created arg в post_save Сигнал есть ли способ передать дополнительный аргумент здесьтак что при выполнении python manage.py test он пропустит отправку смс и электронной почты.Я использовал версионирование одним способом, который, как я думал, имел другую версию API для тестирования, но поскольку сюда не приходит request, я не могу поймать request.version здесь.Пожалуйста, предложите.

1 Ответ

0 голосов
/ 05 марта 2019

Изначально задайте некоторую переменную в вашем файле settings.py, чтобы определить среду, в которой в данный момент работает

# settings.py
MY_ENV = "DEVELOPMENT"

Затем запустите задачи / дополнительные сценарии сельдерея на основе MY_ENV

<b>from django.conf import settings</b>


def send_activation_mail_sms(sender, instance, created, **kwargs):
    if created <b>and settings.MY_ENV == "DEVELOPMENT":</b>
        # do your stuff

Django предоставляет нам возможность переопределить настройки настроек во время тестирования, см. Документ Настройки переопределения .Таким образом, вы можете переопределить значение MY_ENV в самом тесте

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...