【发布时间】:2017-10-14 04:18:01
【问题描述】:
我设置了多租户系统。设置了带有 RabbitMQ 的 Celery。 我有一个系统可以在模型的预保存信号处触发电子邮件。 代码如下:
@receiver(pre_save, sender=Student)
def invite_stu(sender, instance, **kwargs):
user_email = instance.email
subject = 'dummy'
message = ''
html_message = 'dummy'
from_email = my email id
to_list = [user_email]
send_html_mail(subject, message, html_message, settings.DEFAULT_FROM_EMAIL, to_list)
# super(Employee, self).save()
return instance
我正在为此编写一个测试用例:
class BaseSetup(TenantTestCase):
def setup_tenant(self, tenant):
"""
Add any additional setting to the tenant before it get saved. This is required if you have
required fields.
"""
user = User.objects.create(email="dummy@dummy.com", is_active=True)
user.set_password('dummy')
tenant.owner = user
user.save()
def setUp(self):
self.sync_shared()
tenant_model = get_tenant_model()
app.conf.update(CELERY_ALWAYS_EAGER=True)
app.conf.update(CELERY_EAGER_PROPAGATES_EXCEPTIONS=True)
print app.conf.CELERY_ALWAYS_EAGER
test_schema_name = self.get_test_schema_name()
test_tenant_domain_name = self.get_test_tenant_domain()
self.tenant = tenant_model.objects.filter(schema_name=test_schema_name).first()
self.c = TenantClient(self.tenant)
def test_core_student_put_api(self):
response = self.c.post('http://test.localhost:8000/login/',{'email':'admin@dummy.com','password':'dummy'})
response_add_student=self.c.post('http://test.localhost:8000/student_admin/',{'email':'xxx@dummy.com','stu_number':'100','role':'STUDENT'},**{'HTTP_AUTHORIZATION':'JWT '+response.data['token']})
self.assertEqual(response_put_employee.status_code, 201)
测试运行良好,甚至可以通过邮件功能进行测试。但是如果我通过测试运行芹菜,它不会启动和发送邮件,但如果我通过 API 添加一个学生,它会发送电子邮件。
有什么方法可以解决这个问题吗?谢谢!
【问题讨论】:
标签: django django-rest-framework rabbitmq celery