Ho scoperto che è lento eseguire unittest soprattutto con le operazioni di database in Django.
Ha attraversato l'intero processo di creazione di database, tabelle, dispositivi, quindi di test e infine di distruggerli.
Mi ci è voluto anche quasi mezzo minuto per fare tutte queste cose.
Senza considerare la velocità della mia macchina, c'è qualche alternativa per accelerare unittest in Django o qualche suggerimento di accelerazione?
risposte:
2 per risposta № 1Quello che faccio è passare a SQLite quando voglio eseguire i test. Ci vuole molto meno tempo per impostare il database di test in SQLite.
Puoi farlo facilmente usando un file di impostazioni modificato:
$ python manage.py test my_app --settings=test_settings
O nel mio caso,
$ python manage.py test my_app --settings=settings.test
mentre utilizzo lo schema "impostazioni come pacchetto".
2 per risposta № 2
È possibile accelerare i test eseguendoli sqlite db archiviato in memoria
DATABASES["default"] = {
"ENGINE": "django.db.backends.sqlite3",
"NAME": ":memory:"
}
0 per risposta № 3
Dare un'occhiata a Questo articolo. Ha molti consigli utili come:
- Cambiare la funzione di hashing della password in MD5 (fatto un grande miglioramento per me).
- Utilizzo di un DB in memoria più veloce.
- Disabilitazione di app e middleware non necessari.