L'app su cui sto lavorando è fortemente asincrona. L'applicazione Web esegue molte attività attraverso il sedano in base alle azioni dell'utente. Gli stessi compiti di sedano sono in grado di avviare ulteriori compiti.Come testare il codice di test che esegue le attività di sedano?
Codice come quello mostrato di seguito si verifica abbastanza frequentemente nel nostro codice.
def do_sth():
logic();
if condition:
function1.apply_async(*args)
else:
function2.apply_asynch(*args)
Ora vogliamo iniziare l'unità testando qualsiasi nuovo codice che scriviamo e non siamo sicuri di come farlo. Quello che vorremmo affermare nei nostri test di unità pytest
è che vogliamo vedere se la funzione 1 è stata effettivamente chiamata. Non vogliamo necessariamente eseguire lo stesso function1
dato che avremo un test unitario per lo function1
.
Non voglio eseguire il sedano come processo, né voglio eseguire alcun broker AMQP durante la sessione di test dell'unità.
È possibile?
Modifica
è stato fatto notare che si tratta di un duplicato di How do you unit test a Celery task?
Non è. Pensaci. Quello che sto chiedendo è come verificare se la funzione ha chiamato function1 tramite apply_async. Quella domanda è su come faccio a testare function1 stesso. C'è una grande differenza. Ho fatto questa domanda prima di inquadrare questo.
possibile duplicato (http://stackoverflow.com/questions/12078667/how-do-you-unit-test-a-celery-task) – olofom
Non è un duplicato –
Ho visto questa domanda e non è quello che sto chiedendo. Se non è chiaro si prega di fare più domanda –