Ho la seguente configurazione:Esecuzione di un lavoratore Sedano in unittest
- Django-Sedano progetto compito A registri
foo
- Progetto B: Usa send_task di sedano chiamare
foo
- progetto A e progetto B hanno la stessa configurazione: SQS, msgpack per la serializzazione, gzip, ecc
- Ciascun progetto vive su un repository github diversa
Ho le chiamate testate dall'unità a "foo" nel progetto A, senza utilizzare Celery, solo foo(1,2,3)
e si asserisce il risultato. So che funziona.
Ho testato l'unità che send_task nel progetto B invia i parametri corretti.
Quello che non sto testando, e ho bisogno di un vostro consiglio, è l'integrazione tra i due progetti. Mi piacerebbe avere un unittest che sarebbe:
- Avviare un lavoratore nel contesto del progetto A
- Invio di un'attività utilizzando il codice di progetto B
- affermare che il lavoratore ha iniziato nella prima fase si l'attività, con i parametri inviati nel secondo passaggio e che la funzione
foo
ha restituito il risultato previsto.
Sembra possibile hackerarlo utilizzando il sottoprocesso di python e analizzare l'output del worker, ma è brutto. Qual è l'approccio raccomandato ai test unitari in casi come questo? Qualche frammento di codice che potresti condividere? Grazie!
Aiutaci a capire, perché vuoi testare cosa succede dal lato dei lavoratori? Non è sufficiente testare dal lato chiamante, e se i risultati della risposta corretta dichiarano il test un successo? –