Apakah ada fungsi yang diaktifkan di awal / akhir skenario pengujian? Pengaturan fungsi dan tearDown diaktifkan sebelum / setelah setiap pengujian.
Saya biasanya ingin memiliki ini:
class TestSequenceFunctions(unittest.TestCase):
def setUpScenario(self):
start() #launched at the beginning, once
def test_choice(self):
element = random.choice(self.seq)
self.assertTrue(element in self.seq)
def test_sample(self):
with self.assertRaises(ValueError):
random.sample(self.seq, 20)
for element in random.sample(self.seq, 5):
self.assertTrue(element in self.seq)
def tearDownScenario(self):
end() #launched at the end, once
Untuk saat ini, setUp dan tearDown ini adalah tes unit dan tersebar di semua skenario saya (berisi banyak tes), satu adalah tes pertama, yang lainnya adalah tes terakhir.
python
unit-testing
angsa
sumber
sumber
Jawaban:
Mulai 2,7 (sesuai dokumentasi ) yang Anda dapatkan
setUpClass
dantearDownClass
yang dijalankan sebelum dan sesudah pengujian di kelas tertentu dijalankan. Alternatifnya, jika Anda memiliki grup dari mereka dalam satu file, Anda dapat menggunakansetUpModule
dantearDownModule
( dokumentasi ).Jika tidak, taruhan terbaik Anda mungkin akan membuat TestSuite turunan Anda sendiri dan menimpa
run()
. Semua panggilan lain akan ditangani oleh induk, dan run akan memanggil penyiapan dan kode pembongkaran Anda di sekitar panggilan ke metode indukrun
.sumber
Saya memiliki skenario yang sama, bagi saya metode setUpClass dan tearDownClass bekerja dengan sempurna
sumber
Untuk python 2.5, dan saat bekerja dengan pydev, ini agak sulit. Tampaknya pydev tidak menggunakan rangkaian pengujian, tetapi menemukan semua kasus pengujian individual dan menjalankan semuanya secara terpisah.
Solusi saya untuk ini menggunakan variabel kelas seperti ini:
Dengan trik ini, ketika Anda mewarisi dari ini
TestCase
(bukan dari aslinyaunittest.TestCase
), Anda juga akan mewarisirunCount
dari 0. Kemudian dalam metode run,runCount
testcase anak diperiksa dan dinaikkan. Ini meninggalkanrunCount
variabel untuk kelas ini di 0.Artinya
setUpClass
hanya akan dijalankan sekali per kelas dan bukan sekali per instance.Saya belum memiliki
tearDownClass
metode, tapi saya rasa sesuatu bisa dibuat dengan menggunakan penghitung itu.sumber
Berikut ini contohnya: 3 metode pengujian mengakses resource bersama, yang dibuat sekali, bukan per pengujian.
sumber