Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menjana Ujian Unit Parameter dengan Cekap dalam Python?

Bagaimana untuk Menjana Ujian Unit Parameter dengan Cekap dalam Python?

Patricia Arquette
Patricia Arquetteasal
2024-11-23 17:23:13518semak imbas

How to Efficiently Generate Parameterized Unit Tests in 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:

  • Penduaan kod yang dikurangkan: Menjana berbilang kes ujian dengan hanya kecil varians.
  • Kebolehbacaan yang dipertingkatkan: Memastikan kod ujian ringkas dan mudah difahami.
  • Liputan ujian yang dipertingkat: Memastikan semua senario yang mungkin diuji.
  • Peningkatan kebolehselenggaraan: Menjadikannya lebih mudah untuk mengemas kini ujian apabila nilai parameter berubah.

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!

Kenyataan:
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