Menggunakan Test Class pada pytest

Kita dapat menjalankan multiple test dengan menggabungkan test function kedalam class. Aturan penulisan class:

  • Harus diawali dengan keyword Test, perhatikan huruf T kapital.
  • Menggunakan CamelCase, contoh: TestClass.
  • Karena class adalah parent class dan bukan inherit dari class lainnya, harus ditambahkan parameter object.
  • Fungsi test dalam class harus diawali dengan keyword test_.
  • Setiap fungsi dari class harus diisi parameter self.

Mari kita tulis ulang 2 program kecil dari modul sebelumnya, dengan membuat file baru, pada tutorial digunakan second.py, berikut isi codenya:

import pytest

def my_func(x, y, z):
    return x + y + z

def my_exception():
    div = 10/0
    return div

class TestClass(object):
    def test_result1(self):
        assert my_func(1, 2, 3) == 5, "Test Failed, nilai seharusnya 6"

    def test_result2(self):
        assert my_func(1, 2, 3) == 6

def test_result3():
    with pytest.raises(ZeroDivisionError):
        my_exception()

Pada code ada sedikit modifikasi, yaitu kita bisa menambahkan komentar pada perintah assert.

assert my_func(1, 2, 3) == 5, "Test Failed, nilai seharusnya 6"

Jalankan test dengan perintah pytest -v second.py, log berikut akan tampil

PS F:\Project\learnpytest> pytest -v second.py
============================ test session starts ============================
platform win32 -- Python 3.8.5, pytest-6.2.4, py-1.9.0, pluggy-0.13.1 -- c:\users\rangga\anaconda3\python.exe
cachedir: .pytest_cache
rootdir: F:\Project\learnpytest, configfile: pytest.ini
plugins: dash-1.19.0
collected 3 items

second.py::TestClass::test_result1 FAILED                             [ 33%]
second.py::TestClass::test_result2 PASSED                             [ 66%] 
second.py::test_result3 PASSED                                        [100%] 

================================== FAILURES ================================
___________________________ TestClass.test_result1 __________________________

self = <second.TestClass object at 0x0000027A7D6ED460>

    def test_result1(self):
>       assert my_func(1, 2, 3) == 5, "Test Failed, nilai seharusnya 6"
E       AssertionError: Test Failed, nilai seharusnya 6
E       assert 6 == 5
E         +6
E         -5

second.py:12: AssertionError
========================== short test summary info ==========================
FAILED second.py::TestClass::test_result1 - AssertionError: Test Failed, nilai seharusnya 6
======================== 1 failed, 2 passed in 0.48s ========================

Dapat dilihat dari log diatas, 3 fungsi test terdeteksi dan dijalankan oleh pytest. 1 fungsi failed dan 2 fungsi passed.

Perhatikan, komentar pada assert ditampilkan pada log, ini dapat membantu mempermudah untuk melihat fungsi mana yang menyebabkan error.

Sharing is caring:

Leave a Comment