Tôi đang thử kiểm tra một số chức năng cần tây trong khung kiểm thử đơn vị của Django, nhưng bất cứ khi nào tôi thử kiểm tra AsyncResult thì các thử nghiệm hành động như nó chưa bao giờ bắt đầu.Đơn vị kiểm tra AsyncResult trong cần tây
Tôi biết mã này hoạt động trong môi trường thực tế với RabbitMQ, vì vậy tôi đã tự hỏi tại sao nó không hoạt động khi sử dụng khung kiểm tra.
Dưới đây là một ví dụ:
@override_settings(CELERY_EAGER_PROPAGATES_EXCEPTIONS = True,
CELERY_ALWAYS_EAGER = True,
BROKER_BACKEND = 'memory',)
def test_celery_do_work(self):
result = myapp.tasks.celery_do_work.AsyncResult('blat')
applied_task = myapp.tasks.celery_do_work.apply_async((), task_id='blat')
applied_task.wait()
# THIS SUCCEEDS
self.assertTrue(applied_task.successful())
# THIS FAILS
self.assertTrue(result.successful())
Không sử dụng tùy chọn ALWAYS_EAGER vô hiệu hóa chức năng asyncResult kể từ khi nó được thực hiện ngay lập tức? Nếu vậy, có cách nào để có thể kiểm tra trạng thái kiểm tra trạng thái AsyncResult không? Nếu tôi cố gắng đưa ra lựa chọn ALWAYS_EAGER thì các bài kiểm tra không bao giờ chạy, vì vậy tôi thua lỗ.
Cảm ơn!
Tôi nghĩ rằng nó có lẽ là một cái gì đó như thế, nhưng không biết về đối tượng EagerResult. Tôi nghĩ họ sẽ luôn là AsyncResults. Cảm ơn bạn về thông tin! – oiez
Tôi khuyên bạn nên đọc [this] (https://stackoverflow.com/a/43648921/1617295) để bắt đầu công nhân từ bản thân bài kiểm tra đơn vị. – Raffi