0Pricing
Python Academy · Pelajaran

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.py

Fungsi 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) == 0

Berkas 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 fixtures

Mengelompokkan 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 == 12

Menguji 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 -s

Melewati 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 True

Menandai 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 expected

Penulisan 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 != 3

conftest.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 parameter

Menjalankan 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_add

Pemeriksaan 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

  1. Menulis Test pytest Pertama Anda
  2. Fixture dan Penyiapan/Pembongkaran
  3. Parameterisasi dan Cakupan Test
  4. Mocking dengan unittest.mock
← Kembali ke Python Academy