Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimanakah Saya Boleh Melaksanakan Ujian Unit Dinamik dengan Parameterisasi dalam Python?

Bagaimanakah Saya Boleh Melaksanakan Ujian Unit Dinamik dengan Parameterisasi dalam Python?

Linda Hamilton
Lepaskan: 2024-11-23 20:52:13
asal
906 orang telah melayarinya

How Can I Implement Dynamic Unit Testing with Parameterization in Python?

Ujian Unit Dinamik dalam Python dengan Parameterisasi

Pengenalan

Parameterisasi ialah teknik dalam unit ujian yang mengautomasikan penciptaan ujian dengan set data input yang berbeza. Ini membolehkan pembangun menguji kod mereka secara menyeluruh dengan pelbagai senario, memastikan keteguhan dan kebolehpercayaannya.

Parametrizing dengan Penghias pytest

Satu pilihan popular untuk parametrisasi ialah menggunakan penghias pytest. Hanya tambahkan penghias @parametrize pada kelas ujian anda, diikuti dengan senarai nilai seperti berikut:

from pytest import mark

class TestSequence(unittest.TestCase):

    @mark.parametrize(
        ["name", "a", "b"],
        [
            ["foo", "a", "a"],
            ["bar", "a", "b"],
            ["lee", "b", "b"],
        ]
    )
    def test_sequence(self, name, a, b):
        self.assertEqual(a, b)
Salin selepas log masuk

Penghias ini akan menjana ujian berasingan secara automatik untuk setiap set nilai dalam senarai.

Pemparameteran dengan Pustaka berparameter

Pilihan lain ialah menggunakan perpustakaan berparameter. Begini rupa ujian yang sama menggunakan pustaka ini:

from parameterized import parameterized

class TestSequence(unittest.TestCase):

    @parameterized.expand([
        ["foo", "a", "a"],
        ["bar", "a", "b"],
        ["lee", "b", "b"],
    ])
    def test_sequence(self, name, a, b):
        self.assertEqual(a, b)
Salin selepas log masuk

Dalam kedua-dua kes, hasilnya adalah sama: berbilang ujian dijana berdasarkan data yang disediakan, membolehkan anda menguji kod anda dengan teliti.

Pendekatan Asal untuk Parameterisasi

Walaupun kaedah yang diterangkan di atas adalah moden dan meluas digunakan, terdapat pendekatan lama yang menjana kaedah ujian secara dinamik. Walau bagaimanapun, pendekatan ini tidak lagi biasa digunakan dan disebut atas sebab sejarah sahaja:

import unittest

l = [["foo", "a", "a",], ["bar", "a", "b"], ["lee", "b", "b"]]

class TestSequense(unittest.TestCase):
    pass

def test_generator(a, b):
    def test(self):
        self.assertEqual(a,b)
    return test

if __name__ == '__main__':
    for t in l:
        test_name = 'test_%s' % t[0]
        test = test_generator(t[1], t[2])
        setattr(TestSequense, test_name, test)
    unittest.main()
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Ujian Unit Dinamik dengan Parameterisasi dalam 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan