Rumah >pembangunan bahagian belakang >Tutorial Python >Apakah perbezaan antara Pytest dan Unittest dalam Python?

Apakah perbezaan antara Pytest dan Unittest dalam Python?

王林
王林ke hadapan
2023-05-08 21:55:291265semak imbas

1. Pemasangan dan penggunaan

Dari segi pemasangan, Unittest pasti lebih baik kerana tidak perlu memasangnya. Unittest tergolong dalam perpustakaan standard Python dan dipasang apabila Python dipasang. Pemasangan Pytest hanya perlu dipasang melalui pip, yang tidak rumit. Di atas adalah pemasangan, tetapi bagaimana dengan penggunaan?

Pytest lebih fleksibel digunakan dan boleh menggunakan pelbagai pilihan pada baris arahan untuk melaksanakan ujian, manakala Unittest memerlukan menulis kes ujian dalam skrip dan menggunakan modul Unittest untuk menjalankan ujian. Pytest mendapat lebih banyak mata pada ketika ini.

2. Menulis kes ujian

Pytest dan Unittest juga mempunyai beberapa perbezaan dalam menulis kes ujian. Berbanding dengan Unittest, penulisan kes ujian Pytest adalah lebih ringkas. Pytest menggunakan kata kunci assert Python untuk menegaskan keputusan ujian, manakala Unittest perlu menggunakan assertEqual, assertTrue dan kaedah lain untuk menegaskan.

Berikut ialah contoh kes ujian yang ditulis menggunakan Pytest Tujuan kes ujian adalah untuk menguji kelas berikut:

class Calculator:  
    def add(self, a, b):  
        return a + b  
  
    def subtract(self, a, b):  
        return a - b

Jika ditulis dalam Pytest

import pytest  
  
from Calc import Calculator  
  
  
@pytest.mark.parametrize("a, b, expected", [  
    (2, 3, 5),  
    (0, 0, 0),  
    (-1, 1, 0),  
])  
def test_calculator_add(a, b, expected):  
    calculator = Calculator()  
    assert calculator.add(a, b) == expected

ditulis menggunakan Unittest Kes ujian yang sama ialah:

import unittest  
  
from Calc import Calculator  
  
  
class TestCalculator(unittest.TestCase):  
    def test_calculator_add(self):  
        calculator = Calculator()  
        self.assertEqual(calculator.add(2, 3), 5)  
        self.assertEqual(calculator.add(0, 0), 0)  
        self.assertEqual(calculator.add(-1, 1), 0)

Unittest mesti mencipta kelas ujian, jadi dalam kebanyakan senario, Pytest akan mendapat lebih banyak mata apabila membincangkan kesederhanaan kod. Dan kita boleh membandingkan output:

Berikut ialah hasil output Pytest

==================== == ======== sesi ujian bermula =============================
mengumpul ... dikumpul 3 item

test_calc.py::test_calculator_add[2-3-5] LULUS 66%]
test_calc.py ::test_calculator_add[-1-1-0] LULUS [100%]

========================================== == 3 lulus dalam 0.01s ============= ===================

Berikut ialah keputusan Unittest Output

======== ====================== sesi ujian bermula ====================== ================== ====

mengumpul ... mengumpul 1 item

u.py::TestCalculator::test_calculator_add LULUS %]

============ =================== 1 lulus dalam 0.01s ============================ ===

Perbandingan mendapati bahawa pytest akan mengeluarkan keputusan terperinci, manakala unittest memberikan penilaian keputusan keseluruhan. Oleh itu, Pytest lebih unggul dari segi keramahan.

3. Temui kes ujian secara automatik

Pytest boleh menemui kes ujian secara automatik, yang bermaksud kami tidak perlu menulis kod secara manual untuk mengenal pasti kes ujian yang harus dilaksanakan. Unittest memerlukan secara manual menentukan perintah pelaksanaan dan kaedah pelaksanaan kes ujian dalam skrip.

4. Pemalam dan sambungan

Pytest mempunyai set pemalam dan sambungan yang kaya yang boleh digunakan untuk meningkatkan kefungsian rangka kerja ujian. Unittest agak mudah dan tidak mempunyai sambungan sebanyak Pytest.

5. Kelajuan larian

Dari segi kelajuan larian, Pytest lebih laju daripada Unittest. Ini kerana Pytest boleh melaksanakan kes ujian secara selari, manakala Unittest hanya boleh melaksanakan kes ujian mengikut turutan.

6. Laporan

Kedua-dua Pytest dan Unittest boleh menjana laporan ujian, tetapi laporan ujian Pytest lebih mesra dan lebih mudah dibaca. Laporan ujian Pytest mengandungi keputusan pelaksanaan kes ujian, masa, maklumat kegagalan, dsb., manakala laporan ujian Unittest agak mudah.

7. Sokongan komuniti

Pytest mempunyai sokongan komuniti yang besar, jadi anda boleh mencari dokumentasi dan penyelesaian yang berkaitan dengan mudah apabila menggunakan Pytest. Sebagai perbandingan, sokongan komuniti Unittest agak kecil.

Secara umum, Pytest lebih fleksibel, lebih ringkas dan mempunyai lebih banyak sambungan daripada Unittest. Jika anda ingin menulis kes ujian dengan cepat dan memerlukan fungsi lanjutan, Pytest akan menjadi pilihan yang lebih baik. Tetapi jika anda memerlukan lebih kawalan dan ujian yang diperhalusi, Unittest mungkin lebih sesuai untuk anda.

Atas ialah kandungan terperinci Apakah perbezaan antara Pytest dan Unittest dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam