Menggunakan params pada Fixture Function

Selain parameter scope, fixture function juga memiliki parameter param. Setiap test function yang menggunakan fixture function dengan param, akan menjalankan Fixture function sekian kali berdasarkan jumlah parameter.

Penggunaan param ini cocok untuk tipe exhaustive testing, yaitu testing dengan semua kemungkinan data input yang didefinisikan pada param.

Dengan memodifikasi sedikit dari contoh code dari modul sebelumnya (file conftest.py), berikut contoh penulisan params.

Perhatikan params menggunakan list yang dapat diakses fixture function melalui request.param.

@pytest.fixture (scope = "module, params=[1, 2, 3])
def input_value(request):
   input = 60 * request.param
   return input

Test function yang menggunakan fixture function diatas akan melakukan testing dengan 3 input data, yaitu 60, 120 dan 180.

File test dari modul sebelumnya adalah fixture.py, dengan code seperti berikut:

import pytest

def test_mod_2(input_value):
   assert input_value % 2 == 0

def test_mod_3(input_value):
   assert input_value % 3 == 0

Jika kita jalankan pytest -v fixture.py, maka log akan menunjukan 4 kali test dilakukan. Dimana 2 fungsi test memanggil fixture function 2 kali.

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

fixture.py::test_mod_2[1] PASSED                                [ 25%] 
fixture.py::test_mod_3[1] PASSED                                [ 50%]
fixture.py::test_mod_2[2] PASSED                                [ 75%] 
fixture.py::test_mod_3[2] PASSED                                [100%] 

============================ 4 passed in 0.05s ============================
Sharing is caring:

Leave a Comment