PyTest #
pytest
adalah framework testing yang populer di Python, yang memudahkan penulisan dan menjalankan tes. pytest
mendukung fitur-fitur seperti auto-discovery tes, fixtures untuk setup dan teardown, marker untuk pengelompokan tes, dan banyak plugin yang memperluas fungsionalitasnya.
Instalasi pytest
#
Instal pytest
menggunakan pip
:
pip install pytest
1. Menulis Tes Sederhana #
Tes dasar di pytest
hanya perlu berupa fungsi yang dimulai dengan test_
:
# test_example.py
def test_addition():
assert 1 + 1 == 2
def test_subtraction():
assert 2 - 1 == 1
2. Menjalankan Tes #
Untuk menjalankan tes, cukup jalankan perintah pytest
di terminal di direktori yang berisi tes:
pytest
3. Fixtures #
Fixtures digunakan untuk menyiapkan kondisi yang diperlukan untuk tes dan membersihkannya setelah tes selesai. Anda bisa menggunakan fixture dengan menambahkan parameter ke fungsi tes:
import pytest
@pytest.fixture
def sample_list():
return [1, 2, 3]
def test_list_length(sample_list):
assert len(sample_list) == 3
4. Marker #
Markers digunakan untuk menandai tes tertentu agar bisa dijalankan secara selektif. Anda bisa menandai tes dengan @pytest.mark.<marker_name>
:
import pytest
@pytest.mark.slow
def test_slow_operation():
import time
time.sleep(5)
assert True
Untuk menjalankan tes yang ditandai dengan marker tertentu:
pytest -m slow
5. Parametrisasi Tes #
Parametrisasi memungkinkan Anda menjalankan fungsi tes yang sama dengan beberapa set input dan output yang berbeda:
import pytest
@pytest.mark.parametrize("input,expected", [(1, 2), (2, 3), (3, 4)])
def test_increment(input, expected):
assert input + 1 == expected
6. Mengelompokkan Tes #
Tes dapat dikelompokkan dalam kelas untuk menjaga organisasi kode:
class TestMathOperations:
def test_addition(self):
assert 1 + 1 == 2
def test_subtraction(self):
assert 2 - 1 == 1
7. Menangani Ekspektasi Kesalahan #
Anda bisa menggunakan pytest.raises
untuk menguji apakah sebuah fungsi melemparkan kesalahan yang diharapkan:
def test_divide_by_zero():
with pytest.raises(ZeroDivisionError):
1 / 0
8. Menjalankan Tes dengan Output Detail #
Untuk mendapatkan output tes yang lebih detail, gunakan opsi -v
:
pytest -v
9. Plugins #
pytest
memiliki ekosistem plugin yang kaya yang dapat memperluas fungsionalitasnya. Beberapa plugin populer:
pytest-cov
: untuk menambahkan laporan cakupan kode.pytest-xdist
: untuk menjalankan tes secara paralel.pytest-mock
: untuk mempermudah mocking dalam tes.
Instal plugin dengan pip
:
pip install pytest-cov pytest-xdist pytest-mock
Contoh Penggunaan Plugin #
pytest-cov
#
Menjalankan tes dengan laporan cakupan kode:
pytest --cov=nama_paket
pytest-xdist
#
Menjalankan tes secara paralel dengan beberapa prosesor:
pytest -n 4
Kesimpulan #
pytest
adalah framework testing yang sangat kuat dan fleksibel yang memungkinkan Anda untuk menulis dan menjalankan tes dengan mudah. Fitur seperti fixtures, marker, parametrisasi, dan ekosistem plugin yang luas menjadikannya alat yang sangat berguna untuk pengembangan perangkat lunak yang dapat diandalkan. Untuk informasi lebih lanjut, Anda dapat merujuk ke dokumentasi resmi pytest.