Lebih sering daripada tidak, perangkat lunak yang kami tulis berinteraksi langsung dengan apa yang kami beri label sebagai layanan "kotor". Dalam istilah awam. layanan yang sangat penting untuk aplikasi Python kita, tetapi interaksinya memiliki efek samping yang diinginkan tetapi tidak diinginkan—yaitu, tidak diinginkan dalam konteks uji coba mandiri Show
Membagikan MembagikanLebih sering daripada tidak, perangkat lunak yang kami tulis berinteraksi langsung dengan apa yang kami beri label sebagai layanan "kotor". Dalam istilah awam. layanan yang sangat penting untuk aplikasi Python kita, tetapi interaksinya memiliki efek samping yang diinginkan tetapi tidak diinginkan—yaitu, tidak diinginkan dalam konteks uji coba mandiri Oleh Naftuli KayPakar Terverifikasi di bidang Teknik Dari membangun server TCP khusus hingga aplikasi keuangan berskala besar, pengalaman Naftuli yang luas membuatnya menjadi dev dan sysadmin kelas atas Salah satu aspek paling mendasar dalam rekayasa perangkat lunak adalah penanganan kesalahan. Aplikasi perangkat lunak dapat rusak karena berbagai alasan dan oleh karena itu sangat penting untuk dapat menulis kode sedemikian rupa sehingga dapat menangani dan melaporkan pengecualian secara efektif Menangani pengecualian dalam kode sumber saja tidak cukup. Menguji bahwa kode Anda menangani dan melaporkan pengecualian seperti yang diharapkan bahkan lebih penting. Pengujian memastikan bahwa pengecualian dimunculkan pada saat yang tepat dan dengan pesan yang benar Pada artikel hari ini kami akan mendemonstrasikan cara menulis kasus uji yang menguji apakah suatu fungsi memunculkan Pengecualian yang diharapkan saat peristiwa tertentu terjadi. Lebih khusus lagi, kami akan menunjukkan cara melakukannya menggunakan dua paket pengujian paling populer di Python, yaitu Pertama, mari buat satu contoh fungsi yang memunculkan Pengecualian saat peristiwa tertentu terjadi. Kami kemudian akan melalui panduan langkah demi langkah yang pada akhirnya akan membantu Anda menguji penanganan pengecualian def greet(greeting): Fungsi import unittestclass MyTestCase(unittest.TestCase): def test_greet_raises(self):0 tidak sama dengan import unittestclass MyTestCase(unittest.TestCase): def test_greet_raises(self):1 atau import unittestclass MyTestCase(unittest.TestCase): def test_greet_raises(self):2. Sekarang mari kita lihat dalam praktiknya bagaimana kita dapat menguji dengan benar bahwa fungsi memunculkan pengecualian seperti yang diharapkan dengan unittest dan pytest Menguji penanganan pengecualian dengan unittestUntuk membuat kasus uji untuk menguji apakah import unittestclass MyTestCase(unittest.TestCase): def test_greet_raises(self):6 ketika argumen input tidak memiliki nilai yang diharapkan, kita dapat memanfaatkan metode import unittestclass MyTestCase(unittest.TestCase): def test_greet_raises(self):7 seperti yang diuraikan di bawah ini import unittestclass MyTestCase(unittest.TestCase): def test_greet_raises(self):_ Alternatifnya, Anda bahkan dapat menggunakan Pengelola Konteks seperti yang ditunjukkan pada contoh di bawah ini import unittestclass MyTestCase(unittest.TestCase):def test_greet_raises(self): Kami bahkan dapat menguji pesan aktual yang dilaporkan oleh Pengecualian yang dimunculkan menggunakan pendekatan berikut import unittestclass MyTestCase(unittest.TestCase):def test_greet_raises(self):_ Menguji penanganan pengecualian dengan pytestDengan cara yang sama kita dapat menggunakan import pytestdef test_greet():_ Demikian pula, kami juga dapat menguji pesan kesalahan yang dilaporkan oleh Pengecualian yang kami harapkan akan dimunculkan import pytestdef test_greet(): Pikiran AkhirCakupan pengujian adalah salah satu metrik terpenting yang dapat Anda gunakan untuk mengetahui seberapa baik kode sumber Anda diuji. Terlepas dari desain yang bagus dan kode yang efisien, sangat penting untuk memastikan bahwa setiap aspek kode Anda berfungsi seperti yang diharapkan sehingga Anda dapat meminimalkan bug. Dan ini hanya dapat dicapai melalui pengujian menyeluruh Dalam tutorial singkat hari ini, kami mendemonstrasikan cara menguji fungsi yang memunculkan Pengecualian. Selain menguji “jalur yang baik” dari alur, penting juga untuk memastikan bahwa kesalahan ditangani dengan benar dalam kode sumber Anda Jadilah anggota dan baca setiap cerita di Medium. Biaya keanggotaan Anda secara langsung mendukung saya dan penulis lain yang Anda baca. Anda juga akan mendapatkan akses penuh ke setiap cerita di Medium Bagaimana Anda memunculkan pengecualian dari tiruan dengan Python?Tetapkan saja pengecualian untuk side_effect sebagai gantinya. mockedObj. raiseError. side_effect = Pengecualian("Tes") .
Bagaimana Anda meningkatkan pengecualian dalam pengujian unit Python?menggunakan argumen kata kunci. Lewati saja pengecualian, fungsi yang dapat dipanggil dan parameter dari fungsi yang dapat dipanggil sebagai argumen kata kunci yang akan menimbulkan pengecualian. Lakukan pemanggilan fungsi yang akan memunculkan pengecualian dengan konteks .
Apa yang dilakukan @patch dengan Python?patch() sebagai Dekorator
. Fungsi-fungsi ini sekarang ada di file mereka sendiri, terpisah dari pengujiannya. Selanjutnya, Anda akan membuat ulang tes Anda dalam file bernama tes. py. mock an object for the duration of your entire test function, you can use patch() as a function decorator. These functions are now in their own file, separate from their tests. Next, you'll re-create your tests in a file called tests.py .
Apa perbedaan antara side_effect dan Return_value?side_effect vs return_value
. With side_effect you define a function/class (or iterator or exception), which should be called instead of the original function/class. Dengan return_value Anda menentukan hasilnya, fungsi/kelas apa yang seharusnya dikembalikan sehingga kita tidak perlu memanggilnya. |