Fixture Function Scoping dan Teardown Code

Fixture Scoping

Kita dapat mengatur scope dari fixture function dengan menambahkan property scope pada decorator.

Berikut contoh penulisan scoping:

@pytest.fixture(scope = "module")
@pytest.fixture (scope = "module)
def input_value():
   input = 60
   return input

Fixture function memiliki scope:

  • Function
  • Class
  • Module
  • Package
  • Session

Teardown Code

Teardown code adalah code yang kita buat untuk proses clean up otomatis. Dengan proses cleanup, testing unit dipastikan tidak meninggalkan data yang dapat memenuhi sistem atau mungkin bisa mengganggu proses testing lainnya.

Ada dua pendekanan yaitu yield fixture dan finalizer. pytest merekomendasikan untuk menggunakan perintah yield fixture.

Yield Fixture

Gunakan keyword yield untuk menggantikan perintah return pada fungsi fixture. Kemudian tuliskan code teardown.

Jika menggunakan contoh modul sebelumnya, maka code ditulis seperti berikut

@pytest.fixture
def input_value():
   input = 60
   yield input
   #teardown code goes here
   print("Clean up proses berhasil...")

Finalizer

Finalizer function ditambahkan dalam fixture function, dan dipanggil sebelum return function dijalankan dengan menggunakan perintah request.addFinalizer(nama_fungsi).

Perhatikan, pada fixture function harus ditambahkan parameter request object.

@pytest.fixture
def input_value(request):
   input = 60

   #finalizer function
   def fin():
      #teardown code goes here
      print("Clean up proses berhasil...")

   request.addfinalizer(fin)
   return input
   

Sharing is caring:

Leave a Comment