Menulis Test pytest Pertama Anda
Pahami penemuan test, pernyataan assert, dan struktur test.
Menulis Test pytest Pertama Anda adalah pelajaran Python Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Python Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Python Academy mencakup 4 pelajaran total.
Memasang pytest
Pasang pytest dengan pip. pytest tidak memiliki konfigurasi wajib — pytest menemukan pengujian secara otomatis.
# pip install pytest
# Run all tests
# pytest
# Run a specific file
# pytest test_math.pyFungsi Pengujian Sederhana
pytest mengumpulkan fungsi apa pun yang diawali dengan test_. Gunakan pernyataan assert biasa — pytest menulis ulang pernyataan tersebut untuk menghasilkan keluaran yang lebih terperinci.
# test_math.py
def add(a, b):
return a + b
def test_add():
assert add(2, 3) == 5
def test_add_negative():
assert add(-1, 1) == 0Berkas Pengujian dan Penemuan
pytest menemukan berkas pengujian bernama test_*.py atau *_test.py dan mengumpulkan fungsi bernama test_* atau kelas bernama Test*.
tests/
test_utils.py
test_models.py
conftest.py # shared fixturesMengelompokkan Pengujian dalam Kelas
Kelompokkan pengujian terkait dalam kelas yang diawali dengan Test. unittest.TestCase tidak diperlukan.
class TestCalculator:
def test_add(self):
assert 1 + 1 == 2
def test_multiply(self):
assert 3 * 4 == 12Menguji Pengecualian
Gunakan pytest.raises sebagai pengelola konteks untuk memastikan bahwa pengecualian tertentu dimunculkan.
import pytest
def divide(a, b):
if b == 0:
raise ZeroDivisionError("cannot divide by zero")
return a / b
def test_divide_by_zero():
with pytest.raises(ZeroDivisionError, match="cannot divide"):
divide(10, 0)Flag -v
Jalankan pytest dengan -v (terperinci) untuk melihat setiap nama pengujian beserta status berhasil/gagalnya.
# pytest -v
# test_math.py::test_add PASSED
# test_math.py::test_add_negative PASSED
# Show print output too:
# pytest -v -sMelewati Pengujian
Gunakan @pytest.mark.skip atau @pytest.mark.skipif untuk melewati pengujian secara bersyarat.
import pytest, sys
@pytest.mark.skip(reason="not implemented yet")
def test_future_feature():
assert False
@pytest.mark.skipif(sys.platform == "win32", reason="Unix only")
def test_unix_only():
assert TrueMenandai Pengujian sebagai Kegagalan yang Diharapkan
@pytest.mark.xfail menandai pengujian yang Anda perkirakan akan gagal. Pengujian dianggap berhasil jika gagal dan memberikan peringatan jika ternyata berhasil.
import pytest
@pytest.mark.xfail(reason="known bug #42")
def test_buggy():
assert 1 == 2 # will fail, but that's expectedPenulisan Ulang assert
pytest menulis ulang pernyataan assert untuk menampilkan nilai yang menyebabkan kegagalan — jauh lebih berguna daripada AssertionError tanpa perincian.
def test_list_equal():
result = [1, 2, 4]
expected = [1, 2, 3]
assert result == expected
# AssertionError:
# assert [1, 2, 4] == [1, 2, 3]
# At index 2 diff: 4 != 3conftest.py
conftest.py dimuat secara otomatis oleh pytest. Letakkan fixture dan plugin bersama di sini tanpa mengimpornya secara eksplisit.
# conftest.py
import pytest
@pytest.fixture
def sample_data():
return {"key": "value"}
# Any test file in the same dir can use sample_data as a parameterMenjalankan Subkumpulan Pengujian
Gunakan -k untuk menjalankan pengujian yang cocok dengan ekspresi kata kunci.
# Run tests containing "add"
# pytest -k "add"
# Run tests NOT containing "slow"
# pytest -k "not slow"
# Run a specific test
# pytest test_math.py::test_addPemeriksaan Cepat
Dengan awalan apa nama fungsi pengujian pytest harus dimulai agar ditemukan secara otomatis?
Ringkasan
pytest tidak memerlukan kode pendukung: beri nama berkas dengan test_*.py, beri nama fungsi dengan test_*, dan gunakan assert biasa. Gunakan pytest.raises untuk pengecualian, -v untuk keluaran terperinci, dan conftest.py untuk fixture bersama.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Menulis Test pytest Pertama Anda” gratis?
Ya — teks lengkap “Menulis Test pytest Pertama Anda” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Python Academy, upgrade ke CoddyKit PRO. Kursus Python Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Menulis Test pytest Pertama Anda”?
Pahami penemuan test, pernyataan assert, dan struktur test. Kamu berlatih Python Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Python Academy?
Tidak diperlukan pengalaman sebelumnya. Python Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Menulis Test pytest Pertama Anda” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Python Academy ini?
Ya. Setiap pelajaran Python Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Menulis Test pytest Pertama Anda
- Fixture dan Penyiapan/Pembongkaran
- Parameterisasi dan Cakupan Test
- Mocking dengan unittest.mock