Rumah > pembangunan bahagian belakang > Tutorial Python > Tulis ujian unit profesional di Python

Tulis ujian unit profesional di Python

尊渡假赌尊渡假赌尊渡假赌
Lepaskan: 2025-03-05 10:46:08
asal
389 orang telah melayarinya

Write Professional Unit Tests in Python

Ujian unit adalah asas untuk membina perisian yang boleh dipercayai. Terdapat banyak jenis ujian, tetapi ujian unit adalah yang paling penting. Ujian unit membolehkan anda merasa yakin bahawa anda telah menguji coretan kod sepenuhnya sebagai unit asas dan bergantung kepada mereka semasa membina program anda. Mereka memperluaskan rizab kod yang dipercayai di luar skop ciri-ciri terbina dalam bahasa dan perpustakaan standard. Di samping itu, Python memberikan sokongan yang kuat untuk ujian unit menulis.

Running Contoh

Sebelum kita menyelam ke dalam semua prinsip, heuristik, dan panduan, mari kita lihat contoh ujian unit praktikal.

Buat direktori baru yang dipanggil

python_tests dan tambahkan dua fail:

  • car.py
  • test_car.py
Tetapkan direktori sebagai pakej python dengan menambah fail

init .py . Struktur fail mestilah seperti berikut:

Fail
<code>python_tests/
        -__init__.py
        - car.py
        - test_car.py</code>
Salin selepas log masuk

car.py akan digunakan untuk menulis logik program kereta memandu sendiri yang kami gunakan dalam contoh ini, dan fail test_car.py akan digunakan untuk menulis semua ujian.

kandungan fail car.py:

class SelfDrivingCar:
    def __init__(self):
        self.speed = 0
        self.destination = None

    def _accelerate(self):
        self.speed += 1

    def _decelerate(self):
        if self.speed > 0:
            self.speed -= 1

    def _advance_to_destination(self):
        distance = self._calculate_distance_to_object_in_front()
        if distance < 1:  # 假设距离单位为米
            self.stop()
        elif distance < 5:
            self._decelerate()
        elif self.speed < self._get_speed_limit():
            self._accelerate()

    def _has_arrived(self):
        pass  # 需要实现到达目的地判断逻辑

    def _calculate_distance_to_object_in_front(self):
        pass  # 需要实现计算前方物体距离的逻辑

    def _get_speed_limit(self):
        pass  # 需要实现获取速度限制的逻辑

    def stop(self):
        self.speed = 0

    def drive(self, destination):
        self.destination = destination
        while not self._has_arrived():
            self._advance_to_destination()
        self.stop()
Salin selepas log masuk
Ini adalah ujian unit untuk kelas ujian. Dapatkan modul Unittest seperti yang ditunjukkan di bawah.

from unittest import TestCase
Salin selepas log masuk
Anda kemudian boleh mengatasi modul Unittest.Main yang disediakan oleh Rangka Kerja Ujian Unittest dengan menambahkan skrip ujian berikut di bahagian bawah fail ujian.

if __name__ == '__main__':
    unittest.main()
Salin selepas log masuk
Teruskan dan tambahkan skrip ujian di bahagian bawah

test_car.py fail seperti yang ditunjukkan di bawah.

import unittest
from car import SelfDrivingCar

class SelfDrivingCarTest(unittest.TestCase):
    def setUp(self):
        self.car = SelfDrivingCar()

    def test_stop(self):
        self.car.speed = 5
        self.car.stop()
        self.assertEqual(0, self.car.speed)
        self.car.stop()
        self.assertEqual(0, self.car.speed)

if __name__ == '__main__':
    unittest.main(verbosity=2)
Salin selepas log masuk
Untuk menjalankan ujian, jalankan program Python:

python test_car.py
Salin selepas log masuk
anda harus melihat output berikut:

<code>test_stop (__main__.SelfDrivingCarTest) ... ok

----------------------------------------------------------------------
Ran 1 test in 0.000s

OK</code>
Salin selepas log masuk
Test Discovery

kaedah lain, dan kaedah yang paling mudah, adalah untuk menguji penemuan. Pilihan ini hanya ditambah dalam Python 2.7. Sebelum 2.7, anda boleh menggunakan hidung untuk menemui dan menjalankan ujian. Hidung mempunyai kelebihan lain, seperti menjalankan fungsi ujian tanpa membuat kelas untuk kes ujian. Tetapi untuk artikel ini, mari kita berpegang dengan Unittest.

seperti namanya, -v logo:

selfdrivingcartest.

Terdapat beberapa tanda untuk mengawal operasi:

python -m unittest -h
Salin selepas log masuk
liputan ujian

Perlindungan ujian adalah kawasan yang sering diabaikan. Liputan adalah berapa kod ujian anda sebenarnya ujian. Sebagai contoh, jika anda mempunyai fungsi dengan pernyataan IF, anda perlu menulis ujian untuk mengatasi cawangan yang benar dan palsu dari pernyataan IF. Sebaik -baiknya, kod anda harus dalam pakej. Ujian untuk setiap pakej harus berada di direktori saudara pakej. Dalam direktori ujian, fail yang bernama Unittest Module harus disediakan untuk setiap modul pakej.

Kesimpulan

ujian unit adalah asas kod yang boleh dipercayai. Dalam tutorial ini, saya meneroka beberapa prinsip dan garis panduan untuk ujian unit dan menerangkan beberapa sebab di sebalik amalan terbaik. Semakin besar sistem yang anda bina, ujian unit yang lebih penting adalah. Tetapi ujian unit tidak mencukupi. Sistem besar juga memerlukan jenis ujian lain: ujian integrasi, ujian prestasi, ujian beban, ujian penembusan, ujian penerimaan, dll.

Artikel ini telah dikemas kini dan mengandungi sumbangan dari Esther Vaati. Esther adalah pemaju perisian dan penyumbang kepada Envato Tuts.

Atas ialah kandungan terperinci Tulis ujian unit profesional di Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan