cari
Rumahpembangunan bahagian belakangTutorial PythonUjian unit dalam Python dengan sheepy

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. |
+-----------------------+-------------------------------------------------------+

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)

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)  

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

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
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
Python vs C: Aplikasi dan kes penggunaan dibandingkanPython vs C: Aplikasi dan kes penggunaan dibandingkanApr 12, 2025 am 12:01 AM

Python sesuai untuk sains data, pembangunan web dan tugas automasi, manakala C sesuai untuk pengaturcaraan sistem, pembangunan permainan dan sistem tertanam. Python terkenal dengan kesederhanaan dan ekosistem yang kuat, manakala C dikenali dengan keupayaan kawalan dan keupayaan kawalan yang mendasari.

Rancangan Python 2 jam: Pendekatan yang realistikRancangan Python 2 jam: Pendekatan yang realistikApr 11, 2025 am 12:04 AM

Anda boleh mempelajari konsep pengaturcaraan asas dan kemahiran Python dalam masa 2 jam. 1. Belajar Pembolehubah dan Jenis Data, 2.

Python: meneroka aplikasi utamanyaPython: meneroka aplikasi utamanyaApr 10, 2025 am 09:41 AM

Python digunakan secara meluas dalam bidang pembangunan web, sains data, pembelajaran mesin, automasi dan skrip. 1) Dalam pembangunan web, kerangka Django dan Flask memudahkan proses pembangunan. 2) Dalam bidang sains data dan pembelajaran mesin, numpy, panda, scikit-learn dan perpustakaan tensorflow memberikan sokongan yang kuat. 3) Dari segi automasi dan skrip, Python sesuai untuk tugas -tugas seperti ujian automatik dan pengurusan sistem.

Berapa banyak python yang boleh anda pelajari dalam 2 jam?Berapa banyak python yang boleh anda pelajari dalam 2 jam?Apr 09, 2025 pm 04:33 PM

Anda boleh mempelajari asas -asas Python dalam masa dua jam. 1. Belajar pembolehubah dan jenis data, 2. Struktur kawalan induk seperti jika pernyataan dan gelung, 3 memahami definisi dan penggunaan fungsi. Ini akan membantu anda mula menulis program python mudah.

Bagaimana Mengajar Asas Pengaturcaraan Pemula Komputer Dalam Kaedah Projek dan Masalah Dikemukakan Dalam masa 10 Jam?Bagaimana Mengajar Asas Pengaturcaraan Pemula Komputer Dalam Kaedah Projek dan Masalah Dikemukakan Dalam masa 10 Jam?Apr 02, 2025 am 07:18 AM

Bagaimana Mengajar Asas Pengaturcaraan Pemula Komputer Dalam masa 10 jam? Sekiranya anda hanya mempunyai 10 jam untuk mengajar pemula komputer beberapa pengetahuan pengaturcaraan, apa yang akan anda pilih untuk mengajar ...

Bagaimana untuk mengelakkan dikesan oleh penyemak imbas apabila menggunakan fiddler di mana-mana untuk membaca lelaki-dalam-tengah?Bagaimana untuk mengelakkan dikesan oleh penyemak imbas apabila menggunakan fiddler di mana-mana untuk membaca lelaki-dalam-tengah?Apr 02, 2025 am 07:15 AM

Cara mengelakkan dikesan semasa menggunakan fiddlerevery di mana untuk bacaan lelaki-dalam-pertengahan apabila anda menggunakan fiddlerevery di mana ...

Apa yang perlu saya lakukan jika modul '__builtin__' tidak dijumpai apabila memuatkan fail acar di Python 3.6?Apa yang perlu saya lakukan jika modul '__builtin__' tidak dijumpai apabila memuatkan fail acar di Python 3.6?Apr 02, 2025 am 07:12 AM

Memuatkan Fail Pickle di Python 3.6 Kesalahan Laporan Alam Sekitar: ModulenotFoundError: Nomodulenamed ...

Bagaimana untuk meningkatkan ketepatan segmentasi kata Jieba dalam analisis komen tempat yang indah?Bagaimana untuk meningkatkan ketepatan segmentasi kata Jieba dalam analisis komen tempat yang indah?Apr 02, 2025 am 07:09 AM

Bagaimana untuk menyelesaikan masalah segmentasi kata Jieba dalam analisis komen tempat yang indah? Semasa kami mengadakan komen dan analisis tempat yang indah, kami sering menggunakan alat segmentasi perkataan jieba untuk memproses teks ...

See all articles

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

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

MinGW - GNU Minimalis untuk Windows

MinGW - GNU Minimalis untuk Windows

Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

EditPlus versi Cina retak

EditPlus versi Cina retak

Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

SublimeText3 Linux versi baharu

SublimeText3 Linux versi baharu

SublimeText3 Linux versi terkini