2013-06-19 23 views
5

Aşağıdaki kurulum var:bir Kereviz işçisi Koşu unittest içinde

  • Django-Kereviz proje A kayıtları görev foo
  • Proje B: foo
  • Proje A ve proje B var çağırmak için kereviz send_task kullanır aynı yapılandırma: SQS vb serileştirme, gzip için msgpack Her proje farklı bir github depo yaşar

Ben de hepsi sadece foo(1,2,3) kereviz kullanmadan, proje A'da "foo" için birim test edilmiş aramaları ettik ve sonucu iddia. Bunun çalıştığını biliyorum.

B projesinde doğru parametreleri gönderen send_task ünitesini test ettim. Ben test ve üzerinde tavsiye ihtiyaç değilim Ne

iki proje arasındaki bütünleşmesidir. işçi ilk adım alır yılında başladığı proje B

  • belirt kodunu kullanarak bir görevi gönder

      projesi A
    • bağlamında bir işçiyi başlatın
    • : Ben olacak bir UnitTest istiyorum Görev, ikinci adımda gönderdiğim parametrelerle ve foo işlevinin beklenen sonucu verdiğini.

    Python'un alt işlemlerini kullanarak ve işçinin çıktısını ayrıştırmak suretiyle bunu kesmek mümkün görünüyor, ancak bu çirkin. Böyle durumlarda ünite testine önerilen yaklaşım nedir? Paylaşabileceğiniz kod snippet'i var mı? Teşekkürler!

  • +0

    Bize yardımcı olun, neden işçi tarafında neler olduğunu test etmek istiyorsunuz? Arama yapan taraftan test etmek yeterli değil mi ve doğru cevap sonuçları teste başarı mı veriyor? –

    cevap

    1

    Ben bir birim testi kullanılarak (yani kereviz yoluyla görev parametrelerinin gönderme) açıkça ulaşım mekanizması test etmek faydalıdır olmadığından emin değilim. Şahsen, testimi aşağıdaki gibi yazabilirim (birkaç birim testte bölünebilir):

    • Örnek parametrelerle bir görev oluşturmak için B projesinden kodu kullanın.
    • Görev parametrelerini, Kereviz tarafından kullanılan aynı yöntemi kullanarak kodlayın (örn. Parametreleri toplama veya bunları JSON olarak kodlama).
    • Görev parametrelerini bir kez daha çözerek bozulma olmadığını kontrol edin.
    • Doğru işlevi sağladığından emin olarak görev işlevini çağırın.
    • Görev işlevinin sonuçları için aynı kodlama/kod çözme dizisini gerçekleştirin.
    • görev parametrelerinin kodlama & çözme amaçlanan ve beklendiği gibi eserleri sonuçları olarak

    Bu yöntemi kullanarak, bu

    • görev nesil çalışmalarını test etmek mümkün olacak

    Gerekirse, bir sistem testi kullanarak taşıma mekanizmasının işleyişini bağımsız olarak test edebilirsiniz.