Rumah pembangunan bahagian belakang Tutorial Python Ujian unit dalam Python dengan sheepy

Ujian unit dalam Python dengan sheepy

Sep 25, 2024 am 06:27 AM

Unit testing in Python with sheepy

Helo semua, hari ini saya datang untuk memperkenalkan anda kepada perpustakaan ujian unit baharu yang dipanggil sheepy, tetapi pertama-tama mari kita bercakap tentang kepentingan ujian unit. Perpustakaan ini bukan untuk pemula, untuk melakukan ujian unit dengannya anda perlu memberi sedikit perhatian tambahan. Ia mempunyai penegasan hanya untuk ujian API dengan modul semakan ralat titik akhir dan http.

Pautan Github: github
Pautan PyPi: pypi

Semua perisian matang dan menghormati diri dalam pengeluaran mempunyai ujian unit, sama ada untuk mengetahui sama ada apa yang telah ada dalam kod itu masih berfungsi, untuk mengelakkan pepijat yang telah dilaporkan dan diperbaiki sebelum ini atau untuk menguji ciri baharu, ia adalah petunjuk yang baik bahawa perkara yang mereka bergerak ke hadapan dan tidak mempunyai hutang teknikal terkumpul. Mari kita gunakan penyemak imbas Firefox sebagai contoh, setiap direktori mempunyai subdirektori ujian, dengan ujian khusus untuk pepijat yang telah dilaporkan, dengan cara ini mereka menjamin bahawa pepijat yang diperbaiki tidak akan muncul semula entah dari mana, pepijat yang telah diperbaiki muncul. entah ke mana lagi Ini namanya buang duit. Lama kelamaan anda kehilangan masa, wang, kecekapan dan bahagian pasaran kepada pesaing yang melakukan lebih baik daripada anda dengan sumber yang lebih sedikit.

Setiap orang yang berasa tidak mampu melakukan sesuatu cuba memfitnah sesuatu itu, dan ujian unit tidak berbeza. Untuk mencipta ujian unit yang lebih baik yang merangkumi setiap kes penggunaan memerlukan masa, seperti segala-galanya dalam hidup, anda bahagian belakang Saya ragu anda membaca hanya satu tutorial dan keluar membuat api yang sempurna, perkara yang sama untuk anda bahagian hadapan, saya ragu anda menonton kursus dan datang daripada membuat antara muka yang sempurna. Jadi jangan fikir bahawa dengan ujian unit ia akan menjadi berbeza!

Kaedah penegasan

+-----------------------+-------------------------------------------------------+
| Assertion Method       | Description                                           |
+-----------------------+-------------------------------------------------------+
| assertEqual(a, b)      | Checks if two values are equal.                       |
| assertNotEqual(a, b)   | Checks if two values are not equal.                   |
| assertTrue(expr)       | Verifies that the expression is True.                 |
| assertFalse(expr)      | Verifies that the expression is False.                |
| assertRaises(exc, fn)  | Asserts that a function raises a specific exception.  |
| assertStatusCode(resp) | Verifies if the response has the expected status code.|
| assertJsonResponse(resp)| Confirms the response is in JSON format.             |
| assertResponseContains(resp, key) | Ensures the response contains a given key. |
+-----------------------+-------------------------------------------------------+
Salin selepas log masuk

Pemasangan

Untuk memasangnya sangat mudah, cuma buka terminal pilihan anda, dengan pip dipasang dan taip pip install sheepy

Contoh penggunaan

from sheepy.sheeptest import SheepyTestCase

class ExampleTest(SheepyTestCase):
    def test_success(self):
        self.assertTrue(True)

    def test_failure(self):
        self.assertEqual(1, 2)

    def test_error(self):
        raise Exception("Forced error")

    @SheepyTestCase.skip("Reason to ignore")
    def test_skipped(self):
        pass

    @SheepyTestCase.expectedFailure
    def test_expected_failure(self):
        self.assertEqual(1, 2)

Salin selepas log masuk

Kelas SheepyTestCase menyediakan beberapa fungsi untuk mencipta dan melaksanakan ujian unit, termasuk kaedah ketegasan dan mekanisme untuk mengkonfigurasi gelagat istimewa, seperti melangkau ujian atau mengendalikan kegagalan yang dijangkakan.

Dalam kelas ExampleTest, lima kaedah ujian ditakrifkan:

test_success: Ujian ini menyemak sama ada ungkapan yang dihantar kepada kaedah assertTrue adalah benar. Memandangkan nilai True lulus secara eksplisit, ujian ini akan berjaya.

test_failure: Ujian ini menyemak kesamaan antara dua nilai menggunakan kaedah assertEqual. Walau bagaimanapun, nilai yang dibandingkan, 1 dan 2, adalah berbeza, yang mengakibatkan kegagalan ujian. Ini menunjukkan kes kegagalan yang dijangkakan, di mana ujian mesti mengesan ketidakkonsistenan.

test_error: Kaedah ini menimbulkan pengecualian bertujuan dengan mesej "Ralat paksa". Matlamatnya adalah untuk menguji tingkah laku sistem apabila menangani ralat yang berlaku semasa pelaksanaan ujian. Memandangkan kaedah membuang pengecualian tanpa mengendalikannya, hasilnya akan menjadi ralat dalam ujian.

test_langkau: Ujian ini telah dihiasi dengan kaedah langkau kelas SheepyTestCase, yang bermaksud bahawa ia akan dilangkau semasa menjalankan ujian. Sebab untuk melangkau ujian telah disediakan sebagai "Sebab untuk mengabaikan", dan justifikasi ini boleh dipaparkan dalam laporan ujian akhir.

test_expected_failure: Kaedah ini menggunakan penghias expectedFailure, menunjukkan bahawa kegagalan dijangka berlaku. Di dalam kaedah, terdapat semakan kesamaan antara 1 dan 2, yang biasanya akan mengakibatkan kegagalan, tetapi apabila penghias digunakan, rangka kerja menganggap kegagalan ini sebagai sebahagian daripada tingkah laku yang diharapkan dan tidak akan dianggap sebagai ralat, tetapi sebagai "kegagalan yang dijangkakan".

Output


Keputusan Ujian:
ExampleTest.test_error: GAGAL - Ralat paksa
ExampleTest.test_expected_failure: EXPECTED FAILURE
ExampleTest.test_failure: GAGAL - 1 != 2
ExampleTest.test_langkau: DILANGKAU -
ExampleTest.test_success: OK

Kes ujian api

Pengujian API dalam Rangka Kerja Ujian Sheepy direka bentuk dengan mudah tetapi berkuasa, membolehkan penguji berinteraksi dengan API menggunakan kaedah HTTP biasa seperti GET, POST, PUT dan DELETE. Rangka kerja ini menyediakan kelas khusus, ApiRequests, untuk memudahkan penghantaran permintaan dan pengendalian respons, dengan pengurusan ralat terbina dalam melalui kelas pengecualian HttpError.

Apabila menguji API, kelas ujian mewarisi daripada SheepyTestCase, yang dilengkapi dengan pelbagai kaedah penegasan untuk mengesahkan kelakuan API. Ini termasuk assertStatusCode untuk mengesahkan kod status HTTP, assertJsonResponse untuk memastikan respons dalam format JSON dan assertResponseContains untuk menyemak sama ada kunci tertentu wujud dalam badan respons.

For instance, the framework allows you to send a POST request to an API, verify that the status code matches the expected value, and assert that the JSON response contains the correct data. The API requests are handled through the ApiRequests class, which takes care of constructing and sending the requests, while error handling is streamlined by raising HTTP-specific errors when the server returns unexpected status codes.

By providing built-in assertions and error handling, the framework automates much of the repetitive tasks in API testing, ensuring both correctness and simplicity in writing tests. This system allows developers to focus on verifying API behavior and logic, making it an efficient tool for ensuring the reliability of API interactions.

from sheepy.sheeptest import SheepyTestCase  

class TestHttpBinApi(SheepyTestCase):
    def __init__(self):

        super().__init__(base_url="https://httpbin.org")

    def test_get_status(self):

        response = self.api.get("/status/200")
        self.assertStatusCode(response, 200)  

    def test_get_json(self):

        response = self.api.get("/json")
        self.assertStatusCode(response, 200)  
        self.assertJsonResponse(response)  
        self.assertResponseContains(response, "slideshow")  

    def test_post_data(self):

        payload = {"name": "SheepyTest", "framework": "unittest"}
        response = self.api.post("/post", json=payload)
        self.assertStatusCode(response, 200)  
        self.assertJsonResponse(response)  
        self.assertResponseContains(response, "json") 
        self.assertEqual(response.json()["json"], payload)  

    def test_put_data(self):

        payload = {"key": "value"}
        response = self.api.put("/put", json=payload)
        self.assertStatusCode(response, 200)  
        self.assertJsonResponse(response)  
        self.assertResponseContains(response, "json")  
        self.assertEqual(response.json()["json"], payload)  

    def test_delete_resource(self):

        response = self.api.delete("/delete")
        self.assertStatusCode(response, 200)  
        self.assertJsonResponse(response)  
Salin selepas log masuk

Output example

Test Results:
TestHttpBinApi.test_delete_resource: OK
TestHttpBinApi.test_get_json: OK
TestHttpBinApi.test_get_status: OK
TestHttpBinApi.test_post_data: OK
TestHttpBinApi.test_put_data: OK
Salin selepas log masuk

Summary:

The new sheepy library is an incredible unit testing library, which has several test accession methods, including a module just for API testing, in my opinion, it is not a library for beginners, it requires basic knowledge of object-oriented programming such as methods, classes and inheritance.

Atas ialah kandungan terperinci Ujian unit dalam Python dengan sheepy. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

<🎜>: Bubble Gum Simulator Infinity - Cara Mendapatkan dan Menggunakan Kekunci Diraja
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Sistem Fusion, dijelaskan
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Cara Membuka Kunci Cangkuk Bergelut
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial Java
1666
14
Tutorial PHP
1273
29
Tutorial C#
1253
24
Python: Permainan, GUI, dan banyak lagi Python: Permainan, GUI, dan banyak lagi Apr 13, 2025 am 12:14 AM

Python cemerlang dalam permainan dan pembangunan GUI. 1) Pembangunan permainan menggunakan pygame, menyediakan lukisan, audio dan fungsi lain, yang sesuai untuk membuat permainan 2D. 2) Pembangunan GUI boleh memilih tkinter atau pyqt. TKInter adalah mudah dan mudah digunakan, PYQT mempunyai fungsi yang kaya dan sesuai untuk pembangunan profesional.

Python vs C: Lengkung pembelajaran dan kemudahan penggunaan Python vs C: Lengkung pembelajaran dan kemudahan penggunaan Apr 19, 2025 am 12:20 AM

Python lebih mudah dipelajari dan digunakan, manakala C lebih kuat tetapi kompleks. 1. Sintaks Python adalah ringkas dan sesuai untuk pemula. Penaipan dinamik dan pengurusan memori automatik menjadikannya mudah digunakan, tetapi boleh menyebabkan kesilapan runtime. 2.C menyediakan kawalan peringkat rendah dan ciri-ciri canggih, sesuai untuk aplikasi berprestasi tinggi, tetapi mempunyai ambang pembelajaran yang tinggi dan memerlukan memori manual dan pengurusan keselamatan jenis.

Python dan Masa: Memanfaatkan masa belajar anda Python dan Masa: Memanfaatkan masa belajar anda Apr 14, 2025 am 12:02 AM

Untuk memaksimumkan kecekapan pembelajaran Python dalam masa yang terhad, anda boleh menggunakan modul, masa, dan modul Python. 1. Modul DateTime digunakan untuk merakam dan merancang masa pembelajaran. 2. Modul Masa membantu menetapkan kajian dan masa rehat. 3. Modul Jadual secara automatik mengatur tugas pembelajaran mingguan.

Python vs C: Meneroka Prestasi dan Kecekapan Python vs C: Meneroka Prestasi dan Kecekapan Apr 18, 2025 am 12:20 AM

Python lebih baik daripada C dalam kecekapan pembangunan, tetapi C lebih tinggi dalam prestasi pelaksanaan. 1. Sintaks ringkas Python dan perpustakaan yang kaya meningkatkan kecekapan pembangunan. 2. Ciri-ciri jenis kompilasi dan kawalan perkakasan meningkatkan prestasi pelaksanaan. Apabila membuat pilihan, anda perlu menimbang kelajuan pembangunan dan kecekapan pelaksanaan berdasarkan keperluan projek.

Yang merupakan sebahagian daripada Perpustakaan Standard Python: Senarai atau Array? Yang merupakan sebahagian daripada Perpustakaan Standard Python: Senarai atau Array? Apr 27, 2025 am 12:03 AM

Pythonlistsarepartofthestandardlibrary, sementara

Python: Automasi, skrip, dan pengurusan tugas Python: Automasi, skrip, dan pengurusan tugas Apr 16, 2025 am 12:14 AM

Python cemerlang dalam automasi, skrip, dan pengurusan tugas. 1) Automasi: Sandaran fail direalisasikan melalui perpustakaan standard seperti OS dan Shutil. 2) Penulisan Skrip: Gunakan Perpustakaan Psutil untuk memantau sumber sistem. 3) Pengurusan Tugas: Gunakan perpustakaan jadual untuk menjadualkan tugas. Kemudahan penggunaan Python dan sokongan perpustakaan yang kaya menjadikannya alat pilihan di kawasan ini.

Pembelajaran Python: Adakah 2 jam kajian harian mencukupi? Pembelajaran Python: Adakah 2 jam kajian harian mencukupi? Apr 18, 2025 am 12:22 AM

Adakah cukup untuk belajar Python selama dua jam sehari? Ia bergantung pada matlamat dan kaedah pembelajaran anda. 1) Membangunkan pelan pembelajaran yang jelas, 2) Pilih sumber dan kaedah pembelajaran yang sesuai, 3) mengamalkan dan mengkaji semula dan menyatukan amalan tangan dan mengkaji semula dan menyatukan, dan anda secara beransur-ansur boleh menguasai pengetahuan asas dan fungsi lanjutan Python dalam tempoh ini.

Python vs C: Memahami perbezaan utama Python vs C: Memahami perbezaan utama Apr 21, 2025 am 12:18 AM

Python dan C masing -masing mempunyai kelebihan sendiri, dan pilihannya harus berdasarkan keperluan projek. 1) Python sesuai untuk pembangunan pesat dan pemprosesan data kerana sintaks ringkas dan menaip dinamik. 2) C sesuai untuk prestasi tinggi dan pengaturcaraan sistem kerana menaip statik dan pengurusan memori manual.

See all articles