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