Adakah yang bisa menjelaskan penggunaan Python setUp
dan tearDown
metode saat menulis kasus uji selain yang setUp
dipanggil segera sebelum memanggil metode uji dan tearDown
dipanggil segera setelah dipanggil?
Jawaban:
Secara umum, Anda menambahkan semua langkah prasyarat untuk menyiapkan dan semua langkah pembersihan ke tearDown.
Anda dapat membaca lebih banyak dengan contoh di sini .
Saat metode setUp () ditentukan, runner pengujian akan menjalankan metode tersebut sebelum setiap pengujian. Demikian pula, jika metode tearDown () ditentukan, runner pengujian akan memanggil metode tersebut setelah setiap pengujian.
Misalnya Anda memiliki pengujian yang mengharuskan item ada, atau status tertentu - jadi Anda menempatkan tindakan ini (membuat instance objek, menginisialisasi db, menyiapkan aturan, dan sebagainya) ke dalam penyiapan.
Juga seperti yang Anda ketahui, setiap pengujian harus berhenti di tempat dimulainya - ini berarti bahwa kita harus memulihkan status aplikasi ke status awalnya - misalnya menutup file, koneksi, menghapus item yang baru dibuat, memanggil callback transaksi, dan sebagainya - semua ini langkah-langkah harus dimasukkan ke dalam tearDown.
Jadi idenya adalah bahwa pengujian itu sendiri harus berisi hanya tindakan yang akan dilakukan pada objek pengujian untuk mendapatkan hasilnya, sedangkan setUp dan tearDown adalah metode untuk membantu Anda membiarkan kode pengujian tetap bersih dan fleksibel.
Anda dapat membuat setUp dan tearDown untuk sekumpulan pengujian dan menentukannya di kelas induk - sehingga Anda dapat dengan mudah mendukung pengujian tersebut dan memperbarui persiapan dan pembersihan umum.
Jika Anda mencari contoh yang mudah, silakan gunakan tautan berikut dengan contoh
Anda dapat menggunakan ini untuk memfaktorkan keluar kode yang umum untuk semua pengujian dalam rangkaian pengujian.
Jika Anda memiliki banyak kode berulang dalam pengujian Anda, Anda dapat membuatnya lebih pendek dengan memindahkan kode ini ke setUp / tearDown.
Anda dapat menggunakan ini untuk membuat data uji (mis. Menyiapkan palsu / tiruan), atau mematikan fungsi dengan yang palsu.
Jika Anda melakukan pengujian integrasi, Anda dapat menggunakan periksa prasyarat lingkungan di penyiapan, dan lewati pengujian jika ada yang tidak disiapkan dengan benar.
Sebagai contoh:
class TurretTest(unittest.TestCase):
def setUp(self):
self.turret_factory = TurretFactory()
self.turret = self.turret_factory.CreateTurret()
def test_turret_is_on_by_default(self):
self.assertEquals(True, self.turret.is_on())
def test_turret_turns_can_be_turned_off(self):
self.turret.turn_off()
self.assertEquals(False, self.turret.is_on())
Misalkan Anda memiliki suite dengan 10 tes. 8 dari pengujian berbagi kode penyiapan / pembongkaran yang sama. 2 lainnya tidak.
penyiapan dan pembongkaran memberi Anda cara yang bagus untuk memfaktorkan ulang 8 pengujian tersebut. Sekarang apa yang Anda lakukan dengan 2 tes lainnya? Anda akan memindahkannya ke kotak percobaan / suite lain. Jadi, menggunakan penyiapan dan pembongkaran juga membantu memberikan cara alami untuk memecah pengujian menjadi kasus / suite