Jawaban:
Metode atau kelas pengujian individual dapat dinonaktifkan menggunakan unittest.skip
dekorator.
@unittest.skip("reason for skipping")
def test_foo():
print('This is foo test case.')
@unittest.skip # no reason needed
def test_bar():
print('This is bar test case.')
Untuk opsi lainnya, lihat dokumen untuk Melewati pengujian dan kemungkinan kegagalan .
@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.
def disabled(f):
def _decorator():
print f.__name__ + ' has been disabled'
return _decorator
@disabled
def testFoo():
'''Foo test case'''
print 'this is foo test case'
testFoo()
Keluaran:
testFoo has been disabled
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
dari test_testname
.
Berikut skrip elisp cepat untuk melakukan ini. Elisp saya agak berkarat jadi saya mohon maaf sebelumnya atas masalah yang dimilikinya. Belum dicoba.
(defun disable_enable_test ()
(interactive "")
(save-excursion
(beginning-of-line)
(search-forward "def")
(forward-char)
(if (looking-at "disable_")
(zap-to-char 1 ?_)
(insert "disable_"))))
Cukup menempatkan @unittest.SkipTest
dekorator di atas tes sudah cukup.
unittest.skip
(tanpa alasan) memberi saya kesalahan pada Python 2 tetapi tidak pada Python 3.
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:
pytest PYTHON_FILENAME.TEST_CLASS.TEST_NAME
(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.
@unittest.SkipTest
berfungsi dan tidak@unittest.skip