Jadwal adalah alat yang mendefinisikan kontrak Python untuk digunakan kembali negara / dukungan logika, terutama untuk unit testing & nbsp;. Helper dan logika adaptasi disertakan untuk membuatnya mudah untuk menulis perlengkapan sendiri menggunakan kontrak perlengkapan. Kode lem disediakan yang membuat menggunakan perlengkapan yang memenuhi kontrak Jadwal di unittest kasus uji kompatibel mudah dan lurus ke depan.
Mengapa Jadwal
Standar Python unittest.py tidak memberikan metode yang jelas untuk membuat dan menggunakan kembali negara diperlukan dalam ujian selain dengan menambahkan metode pada kelas uji. Ini skala buruk - fungsi pembantu kompleks propogating sebuah hirarki kelas uji adalah pola biasa saat ini dilakukan. Mengejek sementara alat yang hebat tidak sendiri mencegah hal ini (dan pembantu mengejek hal-hal yang kompleks dapat terakumulasi dalam cara yang sama jika ditempatkan pada kelas uji).
Dengan mendefinisikan kontrak seragam di mana pembantu tidak memiliki ketergantungan pada kelas uji kami mengizinkan semua kegiatan kode kebersihan rutin berlangsung tanpa pengaruh distorsi berada di hirarki kelas yang memodelkan hal yang sama sekali berbeda - yang adalah apa pembantu di sebuah TestCase menderita karena.
Tentang Jadwal
Jadwal A mewakili beberapa negara. Setiap perlengkapan memiliki atribut di dalamnya yang khusus untuk fixture tersebut. Misalnya, perlengkapan mewakili direktori yang dapat digunakan untuk file-file sementara mungkin memiliki atribut 'jalan'.
Membuat Jadwal
Minimal, Fixture subclass, menentukan setup untuk menginisialisasi negara Anda dan jadwal pembersihan ketika pembersihan disebut dan Anda sudah selesai:
>>> Import unittest
>>> Perlengkapan impor
>>> Kelas NoddyFixture (fixtures.Fixture):
... Def setup (self):
... Super (NoddyFixture, self) .setUp ()
... Self.frobnozzle = 42
... Self.addCleanup (delattr, diri, 'frobnozzle')
Ini akan menginisialisasi frobnozzle saat setup disebut, dan ketika pembersihan disebut menyingkirkan atribut frobnozzle.
Ada pembantu untuk mengadaptasi fungsi atau fungsi pasangan menjadi perlengkapan. menempatkan hasil dari fungsi di fn_result:
>>> Impor os.path
>>> Impor shutil
>>> Impor tempfile
>>> Def setup_function ():
... Kembali tempfile.mkdtemp ()
>>> Def teardown_function (perlengkapan):
... Shutil.rmtree (perlengkapan)
>>> Perlengkapan = fixtures.FunctionFixture (setup_function, teardown_function)
>>> Fixture.setUp ()
>>> Print os.path.isdir (fixture.fn_result)
Benar
>>> Fixture.cleanUp ()
Jadwal API
Contoh di atas memperkenalkan beberapa Fixture API. Agar dapat membersihkan setelah fixture telah digunakan, semua perlengkapan menentukan metode pembersihan yang harus dipanggil ketika fixture selesai dengan.
Karena bagus untuk dapat membangun satu set tertentu dari perlengkapan terkait sebelum menggunakan mereka, perlengkapan juga memiliki mendefinisikan sebuah metode setup yang harus dipanggil sebelum mencoba untuk menggunakannya.
Salah satu keinginan bersama dengan perlengkapan yang mahal untuk membuat adalah untuk menggunakan kembali mereka dalam banyak kasus uji; untuk mendukung Fixture dasar ini juga mendefinisikan ulang yang menyebut self.cleanUp (); self.setUp (). Perlengkapan yang lebih efisien dapat membuat diri mereka dapat digunakan kembali harus mengganti metode ini. Hal ini kemudian dapat digunakan dengan beberapa negara tes melalui hal-hal seperti testresources, setUpClass, atau setUpModule.
Bila menggunakan perlengkapan dengan tes Anda secara manual dapat menghubungi setup dan pembersihan metode. Lebih nyaman meskipun adalah dengan menggunakan lem disertakan dari fixtures.TestWithFixtures yang menyediakan mixin mendefinisikan useFixture (kasus unta karena unittest kasus unta seluruh) metode. Ini akan memanggil setup pada fixture, sebut self.addCleanup (perlengkapan) untuk menjadwalkan pembersihan, dan kembali fixture tersebut. Ini memungkinkan satu menulis:
>>> Testtools impor
>>> Import unittest
Perhatikan bahwa kita menggunakan testtools testcase di sini karena kita perlu untuk menjamin metode TestCase.addCleanup.
& Nbsp; >>> kelas NoddyTest (testtools.TestCase, fixtures.TestWithFixtures):
& Nbsp; ... def test_example (self):
& Nbsp; ... perlengkapan = self.useFixture (NoddyFixture ())
& Nbsp; ... self.assertEqual (42, fixture.frobnozzle)
& Nbsp; >>> hasil = unittest.TestResult ()
& Nbsp;. >>> _ = NoddyTest ('test_example') berjalan (hasil)
& Nbsp; >>> mencetak result.wasSuccessful ()
& Nbsp; Benar
Jadwal menerapkan protokol konteks, sehingga Anda juga dapat menggunakan fixture sebagai manajer konteks:
>>> Dengan fixtures.FunctionFixture (setup_function, teardown_function) sebagai perlengkapan:
... Cetak os.path.isdir (fixture.fn_result)
Benar
Persyaratan :
- Python
Komentar tidak ditemukan