Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Melaksanakan Ujian Unit Dinamik dengan Parameterisasi dalam 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)
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)
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()
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!