Pengujian Hidung - Kerangka

Proyek hidung dirilis pada 2005, setahun setelahnya py.testmenerima kedok modernnya. Itu ditulis oleh Jason Pellerin untuk mendukung idiom pengujian yang sama yang telah dirintis oleh py.test, tetapi dalam sebuah paket yang lebih mudah dipasang dan dipelihara.

Itu nose modul dapat dipasang dengan bantuan utilitas pip

pip install nose

Ini akan menginstal modul nose dalam distribusi Python saat ini serta nosetest.exe, yang berarti pengujian dapat dijalankan menggunakan utilitas ini serta menggunakan sakelar –m.

C:\python>nosetests –v test_sample.py
Or
C:\python>python –m nose test_sample.py

nose mengumpulkan tes dari unittest.TestCasesubclass, tentu saja. Kita juga dapat menulis fungsi pengujian sederhana, serta kelas pengujian yang bukan merupakan subkelas dari unittest.TestCase. nose juga menyediakan sejumlah fungsi bermanfaat untuk menulis tes berwaktu, pengujian pengecualian, dan kasus penggunaan umum lainnya.

nosemengumpulkan tes secara otomatis. Tidak perlu mengumpulkan kasus pengujian secara manual ke dalam rangkaian pengujian. Menjalankan tes responsif, sejaknose mulai menjalankan pengujian segera setelah modul pengujian pertama dimuat.

Seperti modul unittest, nose mendukung perlengkapan pada tingkat paket, modul, kelas, dan kasus uji, sehingga inisialisasi yang mahal dapat dilakukan sesering mungkin.

Penggunaan Dasar

Mari kita anggap nosetest.py mirip dengan skrip yang digunakan sebelumnya -

# content of nosetest.py
def func(x):
   return x + 1
   
def test_answer():
   assert func(3) == 5

Untuk menjalankan tes di atas, gunakan sintaks baris perintah berikut -

C:\python>nosetests –v nosetest.py

Output yang ditampilkan di konsol adalah sebagai berikut -

nosetest.test_answer ... FAIL
================================================================
FAIL: nosetest.test_answer
----------------------------------------------------------------------
Traceback (most recent call last):
   File "C:\Python34\lib\site-packages\nose\case.py", line 198, in runTest
      self.test(*self.arg)
   File "C:\Python34\nosetest.py", line 6, in test_answer
      assert func(3) == 5
AssertionError
----------------------------------------------------------------------
Ran 1 test in 0.000s
FAILED (failures = 1)

nose dapat diintegrasikan dengan DocTest dengan menggunakan with-doctest pilihan di baris perintah di atas.

\nosetests --with-doctest -v nosetest.py

Anda dapat menggunakan nose dalam skrip uji -

import nose
nose.main()

Jika Anda tidak ingin skrip pengujian keluar dengan 0 saat berhasil dan 1 jika gagal (seperti unittest.main), gunakan nose.run () sebagai gantinya -

import nose
result = nose.run()

Hasilnya akan menjadi benar jika uji coba berhasil, atau salah jika gagal atau memunculkan pengecualian yang tidak tertangkap.

nosemendukung perlengkapan (metode penyiapan dan pembongkaran) di tingkat paket, modul, kelas, dan pengujian. Seperti halnya perlengkapan py.test atau unittest, penyiapan selalu berjalan sebelum pengujian apa pun (atau kumpulan pengujian untuk paket dan modul pengujian); pembongkaran berjalan jika penyetelan telah berhasil diselesaikan, apa pun status uji coba.