Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Menjana Ujian Unit Parameter dengan Cekap dalam Python?
Cara Menghasilkan Ujian Unit Dinamik (Berparameter) dalam Python
Pengenalan
Apabila menguji fungsi yang kompleks, selalunya perlu mencipta beberapa kes ujian dengan input yang sedikit berbeza. Mencipta setiap kes ujian secara manual boleh menjadi membosankan dan terdedah kepada ralat. Di sinilah ujian berparameter dimainkan.
Penarameteran
Penarameteran membolehkan anda mentakrifkan satu kes ujian dan menyediakan senarai nilai parameter untuk menjalankan ujian bagi setiap set parameter. Pendekatan ini mengautomasikan penjanaan kes ujian dan memastikan semua input yang mungkin diuji.
Menggunakan Parametrizer pytest
pytest menyediakan penghias yang mudah, @pytest.mark.parametrize, untuk fungsi ujian parametri. Ia memerlukan senarai tupel atau kamus sebagai hujahnya, setiap satu mewakili satu set nilai parameter.
import pytest test_data = [ ("foo", "a", "a"), ("bar", "a", "b"), ("lee", "b", "b"), ] @pytest.mark.parametrize("name, a, b", test_data) def test_sequence(name, a, b): assert a == b
Kod ini akan menjana tiga ujian, satu untuk setiap set parameter dalam test_data. Nama ujian akan dijana secara automatik berdasarkan nilai parameter.
Menggunakan Pakej berparameter
Pakej berparameter menyediakan antara muka yang lebih fleksibel untuk penparameteran. Ia membolehkan anda mentakrifkan fungsi penjana yang mengembalikan urutan kes ujian.
from parameterized import parameterized test_data = [ ("foo", "a", "a"), ("bar", "a", "b"), ("lee", "b", "b"), ] @parameterized.expand(test_data) def test_sequence(name, a, b): assert a == b
Sekali lagi, kod ini akan menjana tiga ujian, satu untuk setiap set parameter dalam test_data. Nama ujian akan dijana secara automatik.
Faedah
Menggunakan ujian berparameter menawarkan beberapa faedah:
Atas ialah kandungan terperinci Bagaimana untuk Menjana Ujian Unit Parameter dengan Cekap dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!