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.
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
Berikut ialah keputusan Unittest Output==================== == ======== 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 ============= ===================
======== ====================== sesi ujian bermula ====================== ================== ====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 larianDari 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. LaporanKedua-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.mengumpul ... mengumpul 1 item
u.py::TestCalculator::test_calculator_add LULUS %]
============ =================== 1 lulus dalam 0.01s ============================ ===
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!