cari
Rumahpembangunan bahagian belakangTutorial PythonAnalisis mendalam penggunaan lanjutan dan teknik rangka kerja Pytest

Analisis mendalam penggunaan lanjutan dan teknik rangka kerja Pytest

Penjelasan terperinci tentang penggunaan dan teknik lanjutan rangka kerja Pytest

Pengenalan:

Pytest ialah rangka kerja ujian Python yang berkuasa dan mudah digunakan Ia menyediakan fungsi yang kaya dan fleksibiliti untuk mengatur, menjalankan dan mengurus ujian dengan mudah kes. Selain fungsi ujian asas, Pytest juga menyediakan beberapa penggunaan dan teknik lanjutan untuk membantu pembangun menulis dan mengurus kod ujian dengan lebih baik. Artikel ini akan memperkenalkan secara terperinci beberapa penggunaan dan teknik lanjutan rangka kerja Pytest, dan memberikan contoh kod khusus.

1. Gunakan pemalam Pytest untuk mengembangkan fungsi:

Pytest menyediakan banyak pemalam yang boleh mengembangkan fungsi rangka kerja, seperti memahami liputan kod, menjana laporan ujian HTML dan menyepadukan alatan lain. Salah satu pemalam yang paling biasa digunakan ialah pytest-cov, yang boleh membantu kami menilai liputan ujian. Memasang dan menggunakan pemalam pytest-cov adalah sangat mudah, cuma laksanakan arahan berikut:

pip install pytest-cov

Apabila melaksanakan pytest dalam direktori kod ujian, gunakan pilihan --cov untuk menjana laporan liputan ujian:

pytest --cov=your_module tests/

Selain itu , Pytest juga menyokong pemalam lain , seperti pytest-html, pytest-xdist, pytest-rerunfailures, dll. Anda boleh memilih pemalam yang sesuai mengikut keperluan projek.

2. Ujian berparameter:

Pengujian berparameter ialah ciri penting rangka kerja Pytest Ia boleh menjalankan berbilang kes ujian serupa dengan hanya menambahkan @pytest.mark pada parameter fungsi ujian atau kelas ujian . Contohnya, jika kami menulis fungsi ujian yang mengira jumlah dua nombor, kami boleh menggunakan ujian berparameter untuk menjalankan berbilang kes ujian:

import pytest

@pytest.mark.parametrize("a, b, expected", [
    (1, 2, 3),
    (0, 0, 0),
    (-1, 1, 0)
])
def test_addition(a, b, expected):
    assert a + b == expected

Dalam kod di atas, kami menggunakan penghias @pytest.mark.parametrize untuk mentakrifkan tiga Ujian kes menguji input berbeza dan output dijangka masing-masing. Apabila menjalankan fungsi ujian ini, Pytest akan menjalankan ketiga-tiga kes ujian ini secara automatik dan memaparkan keputusan yang sedang dijalankan.

3. Maklumat kegagalan tersuai:

Apabila kes ujian gagal, Pytest akan mengeluarkan maklumat kegagalan lalai, termasuk fail, fungsi dan nombor baris tempat kes ujian berada. Kadangkala maklumat lalai ini mungkin tidak mencukupi untuk membantu kami mencari masalah. Dalam Pytest, kami boleh memberikan maklumat ralat yang lebih berharga dengan menyesuaikan maklumat kegagalan. Contohnya:

import pytest

def test_division():
    dividend = 10
    divisor = 0
    expected = ValueError
    
    with pytest.raises(expected) as excinfo:
        result = dividend / divisor
    
    assert str(excinfo.value) == "division by zero"

Dalam kod di atas, kami menguji operasi pembahagian Apabila pembahagi ialah 0, kami menjangkakan untuk menimbulkan pengecualian ValueError, dan kami berharap untuk mengeluarkan mesej ralat tersuai "divisyen dengan sifar" apabila ujian gagal. Dengan menggunakan pengurus konteks pytest.raises dengan pernyataan tegas, kami boleh menangkap dan mengesahkan pengecualian dan mengeluarkan mesej kegagalan tersuai.

4. Gunakan Lekapan tersuai:

Lekapan ialah konsep yang sangat penting dalam rangka kerja Pytest Ia boleh digunakan untuk menyediakan beberapa sumber yang dikongsi untuk fungsi ujian. Pytest menyediakan beberapa lekapan yang biasa digunakan, seperti tmpdir, monkeypatch, caplog, dll., tetapi kadangkala kita perlu menyesuaikan lekapan untuk memenuhi keperluan ujian tertentu. Menulis dan menggunakan lekapan tersuai adalah sangat mudah, seperti contoh berikut:

import pytest

@pytest.fixture
def my_fixture():
    data = [1, 2, 3, 4, 5]
    return data

def test_my_fixture(my_fixture):
    assert len(my_fixture) == 5
    assert sum(my_fixture) == 15

Dalam kod di atas, kami mentakrifkan fungsi lekapan my_fixture, gunakan my_fixture sebagai parameter dalam fungsi ujian, Pytest akan memanggil fungsi lekapan dan lulus secara automatik nilai pulangan kepada fungsi ujian. Dalam fungsi ujian, kita boleh menggunakan lekapan sama seperti memanggil fungsi biasa.

Kesimpulan:

Artikel ini menyediakan pengenalan terperinci kepada penggunaan lanjutan dan teknik rangka kerja Pytest, dan memberikan contoh kod khusus. Dengan menguasai penggunaan dan teknik lanjutan ini, pembangun boleh menggunakan rangka kerja Pytest dengan lebih baik untuk menulis dan mengurus kod ujian serta meningkatkan kecekapan dan kualiti ujian.

Rujukan:

  1. Pytest Documentation https://docs.pytest.org/en/latest/
  2. Python Software Foundation (n.d. https://pypi.org/project/pytest/

Atas ialah kandungan terperinci Analisis mendalam penggunaan lanjutan dan teknik rangka kerja Pytest. 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
Bagaimana tatasusunan digunakan dalam pengkomputeran saintifik dengan python?Bagaimana tatasusunan digunakan dalam pengkomputeran saintifik dengan python?Apr 25, 2025 am 12:28 AM

Arraysinpython, terutamanya yang, arecrucialinscientificificputingputingfortheirefficiencyandversatility.1) mereka yang digunakan untuk

Bagaimana anda mengendalikan versi python yang berbeza pada sistem yang sama?Bagaimana anda mengendalikan versi python yang berbeza pada sistem yang sama?Apr 25, 2025 am 12:24 AM

Anda boleh menguruskan versi python yang berbeza dengan menggunakan Pyenv, Venv dan Anaconda. 1) Gunakan pyenv untuk menguruskan pelbagai versi python: Pasang pyenv, tetapkan versi global dan tempatan. 2) Gunakan VENV untuk mewujudkan persekitaran maya untuk mengasingkan kebergantungan projek. 3) Gunakan Anaconda untuk menguruskan versi python dalam projek sains data anda. 4) Simpan sistem python untuk tugas peringkat sistem. Melalui alat dan strategi ini, anda dapat menguruskan versi Python yang berbeza untuk memastikan projek yang lancar.

Apakah beberapa kelebihan menggunakan array numpy melalui array python standard?Apakah beberapa kelebihan menggunakan array numpy melalui array python standard?Apr 25, 2025 am 12:21 AM

Numpyarrayshaveseveraladvantagesoverstanderardpythonarrays: 1) thearemuchfasterduetoc-assedimplementation, 2) thearemorememory-efficient, antyedlargedataSets, and3) theyofferoptimized, vectorizedfuncionsformathhematicalicalicalicialisation

Bagaimanakah sifat tatasusunan homogen mempengaruhi prestasi?Bagaimanakah sifat tatasusunan homogen mempengaruhi prestasi?Apr 25, 2025 am 12:13 AM

Kesan homogenitas tatasusunan pada prestasi adalah dwi: 1) homogenitas membolehkan pengkompil untuk mengoptimumkan akses memori dan meningkatkan prestasi; 2) tetapi mengehadkan kepelbagaian jenis, yang boleh menyebabkan ketidakcekapan. Singkatnya, memilih struktur data yang betul adalah penting.

Apakah beberapa amalan terbaik untuk menulis skrip python yang boleh dilaksanakan?Apakah beberapa amalan terbaik untuk menulis skrip python yang boleh dilaksanakan?Apr 25, 2025 am 12:11 AM

ToCraftExecutablePythonscripts, ikutiTheseBestPractics: 1) addAshebangline (#!/Usr/bin/envpython3) tomakethescriptexecutable.2) setpermissionswithchmod xyour_script.py.3)

Bagaimanakah array numpy berbeza dari tatasusunan yang dibuat menggunakan modul array?Bagaimanakah array numpy berbeza dari tatasusunan yang dibuat menggunakan modul array?Apr 24, 2025 pm 03:53 PM

Numpyarraysarebetterfornumericationsoperationsandmulti-dimensialdata, whiletheArrayModuleissuitiableforbasic, ingatan-efisienArrays.1) numpyexcelsinperformanceandfunctionalityforlargedatasetsandcomplexoperations.2) thearrayModeMoremoremory-efficientModeMoremoremoremory-efficientModeMoremoremoremory-efficenceismemoremoremoremoremoremoremoremory-efficenceismemoremoremoremoremorem

Bagaimanakah penggunaan array Numpy berbanding dengan menggunakan array modul array di Python?Bagaimanakah penggunaan array Numpy berbanding dengan menggunakan array modul array di Python?Apr 24, 2025 pm 03:49 PM

NumpyarraysareBetterforheavynumericalcomputing, whilethearraymoduleismoresuitifFormemory-constrainedprojectswithsimpledatypes.1) numpyarraysofferversativilityandperformanceForlargedATAsetSandcomplexoperations.2)

Bagaimanakah modul CTYPES berkaitan dengan tatasusunan di Python?Bagaimanakah modul CTYPES berkaitan dengan tatasusunan di Python?Apr 24, 2025 pm 03:45 PM

ctypesallowscreatingandmanipulatingc-stylearraysinpython.1) usectypestointerwithclibrariesforperformance.2) createec-stylearraysfornumericalcomputations.3) Passarraystocfuntionsforficientsoperations.however, becautiousofmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmemmem

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

SecLists

SecLists

SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.

SublimeText3 Linux versi baharu

SublimeText3 Linux versi baharu

SublimeText3 Linux versi terkini

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)