Mencetak waktu eksekusi uji dan menentukan uji lambat dengan py.test


120

Saya menjalankan pengujian unit pada server CI menggunakan py.test. Pengujian menggunakan sumber daya eksternal yang diambil melalui jaringan. Terkadang test runner membutuhkan waktu terlalu lama, menyebabkan test runner dibatalkan. Saya tidak bisa mengulangi masalah secara lokal.

Apakah ada cara untuk membuat py.test mencetak waktu eksekusi pengujian (lambat), jadi menjepit pengujian yang bermasalah menjadi lebih mudah?

Jawaban:


174

Saya tidak yakin ini akan menyelesaikan masalah Anda, tetapi Anda dapat lulus --durations=Nuntuk mencetak Npengujian paling lambat setelah rangkaian pengujian selesai.

Gunakan --durations=0untuk mencetak semua.


89
Jika Anda melewati --durations=0waktu eksekusi untuk SEMUA tes akan dilaporkan.
oLas

Apakah Anda tahu jika ada kemungkinan untuk menambahkannya ke laporan cakupan HTML yang dibuat? Mirip seperti menambahkan .coveragercfile dengan konten [run] branch = Truemenambahkan informasi cakupan percabangan?
Martin Thoma

Anda perlu menambahkan informasi itu sendiri, pytest-html memiliki dukungan untuk memasukkan konten tambahan.
Bruno Oliveira

4
@oLas: Itu tidak benar: Jika pengujian "terlalu cepat", waktu yang diukur tampaknya bisa menjadi 0 dan mereka masih akan disaring. Ambang batas negatif juga tidak membantu dalam kasus ini. Gangguan lain dengan pendekatan ini adalah pytest akan selalu mencetak (0.00 durations hidden. Use -vv to show these durations.)yang tidak masuk akal.
bluenote10

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.