Sebagai pembangun atau pengaturcara, setiap kali anda menulis kod, satu perkara sering diabaikan: ujian. Pengujian adalah sebahagian daripada pembangunan dan anda harus menguji aplikasi anda dengan teliti untuk memastikan ia memenuhi fungsi yang diperlukan.
Oleh kerana kes ujian telah ditulis terlebih dahulu, tidak ada sebab sebenar untuk dilakukan. mereka lagi Ujian manual. Selalunya, terutamanya dengan aplikasi besar, anda perlu menjalankan banyak peringkat dalam perisian anda untuk menguji sama ada ciri berfungsi. Ini boleh dielakkan melalui ujian. Bayangkan anda perlu menggunakan input khusus setiap kali anda menjalankan aplikasi anda. Dengan ujian, ini akan dimasukkan secara automatik setiap kali ia dijalankan.
Mencipta kes ujian sebelum pembangunan adalah amalan terbaik. Ini memaksa anda untuk memikirkan sistem secara keseluruhan sebelum memulakan pembangunan.
Semasa pengekodan, pelaksanaan fungsi boleh berubah, tetapi output tetap sama. Daripada menguji fungsi secara manual apabila pelaksanaannya berubah, anda hanya boleh melaksanakan kes ujian tertentu yang boleh menjalankan berbilang kes ujian sekaligus.
Kami akan menumpukan pada satu jenis ujian tertentu, ujian unit. Jenis ujian khusus ini digunakan untuk menguji unit kecil kod, seperti fungsi atau kelas.
Untuk membuat ujian unit, kami akan menggunakan ujian unit perpustakaan standard python. Kaedah mencipta kes ujian ini menggunakan OOP (Pengaturcaraan Berorientasikan Objek) dengan mencipta kelas yang mengandungi semua kes ujian. Ini akan membolehkan kami menjalankan semua kes ujian dalam kelas sekaligus.
Nota: Anda boleh menggunakan mana-mana IDE atau editor teks yang anda kenali (IDE python lalai boleh digunakan). Untuk melakukan ini, saya akan menunjukkan menggunakan Visual Studio Code dengan sambungan python.
Mula-mula kami akan mengimport perpustakaan ujian unit kami:
import unittest
Sekarang buat pengisytiharan kelas kami:
class TestingClass(unittest.TestCase):
Nota (unittest.TestCase) dalam python It's inheritance. Menyediakan kefungsian kepada kelas.
Tambah fungsi pertama dalam kelas:
self.assertEqual ialah kaedah yang disediakan oleh kelas yang diwarisi sebelum ini (unittest.TestCase). Kaedah ini menguji sama ada dua pembolehubah mempunyai nilai yang sama.
Tambahkan pelari ujian kami. Inilah yang menjadikan ujian unit kami dijalankan:
unittest.main()
Beginilah rupa kod siap:
Kod di atas menunjukkan Ujian sama ada 9 + 1 sama dengan 11. Jika anda tahu matematik asas, anda harus tahu bahawa 9+1 = 10. Oleh itu, kes ujian ini akan gagal.
Output:
Anda sepatutnya telah menekanya. Gagal!
Penyelesaiannya mudah. Ubah suai kod kepada:
test_var = 9 + 2
Output:
Untuk Untuk menguji di luar fungsi, contoh sebelumnya mungkin tidak realistik. Mari gantikan nilai test_var dengan nilai daripada fungsi. Kami akan menambah pengisytiharan fungsi di bahagian atas fail.
Fungsi ini menambah dua nombor. Gantikan 9 + 2 dengan panggilan fungsi add(9,2) dan jalankan kod.
Setakat ini kami hanya melaksanakan satu kes ujian. Setiap fungsi/kaedah dalam TestingClass (dalam kes ini kedua-duanya adalah sama) mewakili kes ujian.
Mari tambah satu lagi kes ujian test_multiple_num_addition.
NOTA: Semua kes ujian yang dibuat hendaklah mempunyai perkataan "ujian" didahului dengan nama mereka, jika tidak, pelari ujian tidak akan mengenalinya.
Kod anda sepatutnya kelihatan seperti ini:
Jalankan:
Ini jelas akan gagal kerana parameter fungsi hanya menerima dua argumen. Tetapi bagaimana jika kita benar-benar mahu menambah lebih banyak nombor? asterisk parameter nilai (*). Ini membolehkan anda memasukkan berbilang parameter dan membolehkan nilai disimpan sebagai tupel.
Kod sebelum pelaksanaan:
Pelaksanaan:
Pelaksanaan berjaya!
Meletakkan asterisk sebelum pembolehubah parameter fungsi dipanggil parameter bukan kata kunci.
Ringkasan
Percubaan ujian mungkin membawa keteguhan tambahan kepada kod. Ia juga boleh mengubah cara anda melakukan pembangunan. Mempunyai minda ujian memastikan lebih sedikit pepijat dalam pengeluaran dan kurang ujian manual berulang semasa pembangunan. *Pautan asal: https://medium.com/swlh/python-testing-a8156d022eefAtas ialah kandungan terperinci Ujian Python |. Mencipta ujian unit dalam python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!