Bagaimana pengujian unit individual dinonaktifkan sementara saat menggunakan unittest
modul dengan Python?
python
python-unittest
coelhudo
sumber
sumber
@unittest.SkipTest
berfungsi dan tidak@unittest.skip
@unittest.skip
berfungsi juga dengan baik.@unittest.skip
tidak berfungsi.Anda dapat menggunakan dekorator untuk menonaktifkan pengujian yang dapat menggabungkan fungsi dan mencegah pengujian unit googletest atau python untuk menjalankan testcase.
Keluaran:
sumber
Versi terbaru (2.7 - belum dirilis) mendukung pengujian melewatkan / menonaktifkan seperti itu . Anda bisa mendapatkan modul ini dan menggunakannya pada instalasi Python Anda yang sudah ada. Ini mungkin akan berhasil.
Sebelum ini, saya digunakan untuk mengubah nama tes saya ingin melewatkan untuk
xtest_testname
daritest_testname
.Berikut skrip elisp cepat untuk melakukan ini. Elisp saya agak berkarat jadi saya mohon maaf sebelumnya atas masalah yang dimilikinya. Belum dicoba.
sumber
Cukup menempatkan
@unittest.SkipTest
dekorator di atas tes sudah cukup.sumber
unittest.skip
(tanpa alasan) memberi saya kesalahan pada Python 2 tetapi tidak pada Python 3.Saya baru saja mengganti nama metode kasus uji dengan garis bawah: test_myfunc menjadi _test_myfunc.
sumber
The docs untuk 2.1 tidak menentukan mengabaikan atau melewatkan metode.
Namun biasanya, saya memblokir komentar bila diperlukan.
sumber
Berfokus pada bagian pertanyaan yang "dinonaktifkan sementara", jawaban terbaik agak tergantung pada kasus penggunaan. Kasus penggunaan yang membawa saya ke sini adalah saya melakukan pengembangan berdasarkan pengujian pada suatu fungsi. Dalam proses ini, saya menulis tes secara berturut-turut dan sering menggunakan break point dalam fungsi untuk debugging. Jika saya hanya menjalankan semua tes setiap kali saya menjalankan test runner, saya akhirnya berhenti di break point untuk tes yang sudah berfungsi. Menambahkan "lewati" atau memungut nama pengujian atau sesuatu seperti itu bukanlah yang saya inginkan karena ketika saya selesai menulis fungsi, saya ingin semua pengujian berjalan. Jika saya menggunakan "lewati", saya harus kembali dan "batalkan".
Untuk kasus penggunaan saya, solusinya terletak pada runner pengujian, bukan pada kode pengujian. Saya menggunakan pytest . Dengan pytest, mudah untuk menentukan satu pengujian dari baris perintah:
(ganti tutup dengan nilai Anda).
Saya mengerti pertanyaan itu adalah untuk python-unitest. Saya sudah lama tidak menggunakannya. Saya tidak akan terkejut jika itu memiliki sesuatu yang mirip dengan pytest. Jika tidak, Anda dapat dengan mudah beralih ke pytest. Anda tidak perlu mengubah kode Anda. Cukup instal dan ubah perintah runner pengujian Anda.
Juga, saya menggunakan PyCharm Pro. Di halaman yang menunjukkan kode tes saya, ada ikon kecil di sebelah def untuk setiap tes. Saya dapat mengklik ikon itu dan menjalankan pengujian itu satu per satu.
sumber