«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Юнит-тестирование на Python с помощью овцы

Юнит-тестирование на Python с помощью овцы

Опубликовано 8 ноября 2024 г.
Просматривать:600

Unit testing in Python with sheepy

Привет всем, сегодня я пришел познакомить вас с новой библиотекой модульного тестирования под названием Sheepy, но сначала давайте поговорим о важности модульного тестирования. Эта библиотека не для новичков, для проведения модульного тестирования с ее помощью вам придется уделить немного больше внимания. Он имеет утверждения только для тестирования API с модулями проверки конечной точки и http.

Ссылка на Github: github
Ссылка на PyPi: pypi

Все зрелое, уважающее себя программное обеспечение, находящееся в производстве, имеет модульные тесты, предназначенные для того, чтобы понять, продолжает ли работать то, что уже было в коде, для предотвращения ошибок, о которых уже сообщалось и исправлено ранее, или для тестирования новых функций. является хорошим показателем того, что дела идут вперед и не накопился технический долг. Давайте возьмем в качестве примера браузер Firefox. В каждом каталоге есть подкаталог тестов со специальными тестами для уже зарегистрированных ошибок, таким образом они гарантируют, что исправленные ошибки не появятся снова из ниоткуда, появляются уже исправленные ошибки. снова из ниоткуда Это называется выбрасывать деньги. Со временем вы теряете время, деньги, эффективность и долю рынка в пользу конкурента, который добивается большего, чем вы, с меньшими ресурсами.

Каждый, кто чувствует себя неспособным что-то сделать, пытается это что-то опорочить, и модульные тесты не исключение. Чтобы создать более качественные модульные тесты, охватывающие каждый вариант использования, требуется время, как и все в жизни, вы занимаетесь серверной частью. Я сомневаюсь, что вы прочитали всего одно руководство и создали идеальные API, то же самое касается и вашего внешнего интерфейса. Я сомневаюсь, что вы посмотрели курс и пришли делаем интерфейсы совершенными. Так что не думайте, что с юнит-тестами будет иначе!

Методы утверждения

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

Установка

Установить его очень просто, просто откройте терминал по вашему выбору с установленным pip и введите pip install sheshey

Пример использования

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)

Класс SheepyTestCase предоставляет несколько функций для создания и выполнения модульных тестов, включая методы проверки уверенности и механизмы для настройки специального поведения, такого как пропуск тестов или обработка ожидаемых сбоев.

В классе SampleTest определены пять методов тестирования:

test_success: этот тест проверяет, истинно ли выражение, переданное методу AssertTrue. Поскольку значение True передается явно, этот тест завершится успешно.

test_failure: этот тест проверяет равенство двух значений с помощью метода AssertEqual. Однако сравниваемые значения 1 и 2 различны, что приводит к сбою теста. Это демонстрирует случай ожидаемого сбоя, когда тест должен обнаружить несоответствие.

test_error: этот метод вызывает целенаправленное исключение с сообщением «Принудительная ошибка». Цель — протестировать поведение системы при устранении ошибок, возникающих во время выполнения теста. Поскольку метод генерирует исключение, не обрабатывая его, результатом теста будет ошибка.

test_skipped: этот тест дополнен методом пропуска класса SheepyTestCase, что означает, что он будет пропущен во время выполнения тестов. Причина пропуска теста была указана как «Причина игнорирования», и это обоснование может быть отображено в итоговом отчете о тестировании.

test_expected_failure: этот метод использует декоратор ожидаемого отказа, указывающий, что ожидается сбой. Внутри метода происходит проверка на равенство между 1 и 2, которая обычно приводит к сбою, но поскольку был применен декоратор, платформа считает этот сбой частью ожидаемого поведения и не будет рассматриваться как ошибка, но как «ожидаемый провал».

Выход


Результаты теста:
ПримерTest.test_error: FAIL — вынужденная ошибка
ПримерTest.test_expected_failure: ОЖИДАЕМАЯ ОТКАЗ
ПримерTest.test_failure: FAIL - 1 != 2
ПримерTest.test_skipped: ПРОПУЩЕНО -
ПримерTest.test_success: ОК

Тестовый пример API

Тестирование API в Sheepy Test Framework спроектировано как простое, но мощное, позволяющее тестировщикам взаимодействовать с API, используя распространенные методы HTTP, такие как GET, POST, PUT и DELETE. Платформа предоставляет специальный класс ApiRequests для упрощения отправки запросов и обработки ответов со встроенным управлением ошибками через класс исключений HttpError.

При тестировании API тестовый класс наследуется от SheepyTestCase, который оснащен различными методами утверждения для проверки поведения API. К ним относятся AssertStatusCode для проверки кодов состояния HTTP, AssertJsonResponse для обеспечения того, чтобы ответ был в формате JSON, и AssertResponseContains для проверки наличия определенных ключей в теле ответа.

Например, платформа позволяет вам отправить запрос POST к API, проверить, соответствует ли код состояния ожидаемому значению, и подтвердить, что ответ JSON содержит правильные данные. Запросы API обрабатываются через класс ApiRequests, который занимается созданием и отправкой запросов, а обработка ошибок упрощается за счет возникновения ошибок, специфичных для HTTP, когда сервер возвращает неожиданные коды состояния.

Предоставляя встроенные утверждения и обработку ошибок, платформа автоматизирует большинство повторяющихся задач при тестировании API, обеспечивая как корректность, так и простоту написания тестов. Эта система позволяет разработчикам сосредоточиться на проверке поведения и логики API, что делает ее эффективным инструментом обеспечения надежности взаимодействия API.

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)  

Пример вывода

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

Краткое содержание:

Новая библиотека shebby - это невероятная библиотека модульного тестирования, которая имеет несколько методов доступа к тестам, включая модуль только для тестирования API, на мой взгляд, это не библиотека для новичков, она требует базовых знаний объектно-ориентированного программирования. такие как методы, классы и наследование.

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/brunociccarino/unit-testing-in-python-with-sheepy-b93?1. Если есть какие-либо нарушения, свяжитесь с [email protected], чтобы удалить их.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3