Ứng dụng tôi đang làm việc rất không đồng bộ. Ứng dụng web chạy rất nhiều tác vụ thông qua cần tây tùy thuộc vào hành động của người dùng. Các nhiệm vụ cần tây chính họ có khả năng tung ra thêm nhiệm vụ.Làm thế nào để kiểm tra mã đơn vị chạy các nhiệm vụ cần tây?
Mã như được hiển thị bên dưới xảy ra trong cơ sở mã của chúng tôi khá thường xuyên.
def do_sth():
logic();
if condition:
function1.apply_async(*args)
else:
function2.apply_asynch(*args)
Bây giờ chúng tôi muốn bắt đầu thử nghiệm đơn vị bất kỳ mã mới nào mà chúng tôi viết và chúng tôi không chắc chắn cách thực hiện điều này. Những gì chúng tôi muốn khẳng định trong các thử nghiệm đơn vị pytest
của chúng tôi là chúng tôi muốn xem liệu hàm 1 có thực sự được gọi hay không. Chúng tôi không nhất thiết phải tự chạy function1
vì chúng tôi sẽ có thử nghiệm đơn vị cho function1
.
Tôi không muốn chạy cần tây như một quy trình, tôi cũng không muốn chạy bất kỳ nhà môi giới AMQP nào trong phiên kiểm tra đơn vị.
Điều này có thể đạt được không?
Sửa
Nó được chỉ ra rằng đây là một bản sao của How do you unit test a Celery task?
Nó không phải là. Hãy suy nghĩ về nó. Những gì tôi hỏi là làm thế nào để kiểm tra nếu chức năng đã gọi là function1 thông qua apply_async. Câu hỏi đó là về cách tôi tự kiểm tra function1. Có một sự khác biệt lớn. Tôi đã đánh câu hỏi đó trước khi đóng khung này.
thể trùng lặp của (http://stackoverflow.com/questions/12078667/how-do-you-unit-test-a-celery-task) – olofom
Nó không phải là một bản sao –
Tôi đã thấy câu hỏi đó và nó không phải là những gì tôi yêu cầu. Nếu không rõ, hãy hỏi thêm câu hỏi –