Рубрики
Без рубрики

Исключения для Ptyest – Часть I

Pytest Framework позволяет легко написать небольшие тесты, все же весы для поддержки сложных функциональных TES … Теги с Python, тест, исключения.

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

Одно из преимуществ pteest над Неизвестный Модуль заключается в том, что нам не нужно использовать разные методы Assert на разных структурах данных. Так что я бы лучше использовал pteest Отказ

Хороший тестовый набор должен проверить ожидаемое поведение как, когда вход правильный, а также при входе вызывает некоторое исключение. Не тестируя исключение, мы не можем быть уверены, что они будут действительно подняты при необходимости, и наши тесты охватывали все. Так что очень важно тестировать Исключения также.

Позвольте предположить, что у нас есть базовая функция, как ниже:

def divide(a, b):
    if b == 0:
        raise ValueError("Cannot divide by Zero")

    return a / b

Связанный тест должен быть как:

import pytest

from pytest_exception_handle import divide


def test_zero_division():
    assert divide(12, 3) == 4

И с исключением тестирования полного теста должно быть как:

import pytest

from pytest_exception_handle import divide


def test_zero_division():
    assert divide(12, 3) == 4


def test_zero_division_exception():
    with pytest.raises(ValueError):
        assert divide(1, 0)

После запуска pytest -v Флаг для Verbose Выход, вы должны увидеть Выход, как ниже:

platform linux -- Python 3.6.8, pytest-3.8.1, py-1.8.0, pluggy-0.12.0 --
/tmp/python/pytest_exception_handle/.venv/bin/python3
cachedir: .pytest_cache
rootdir: /tmp/python/pytest_exception_handle, inifile:

collected 2 items
tests/test_pytest_exception_handle/test_exception_basic.py::test_zero_division PASSED                                           [ 50% ]
tests/test_pytest_exception_handle/test_exception_basic.py::test_zero_division_exception PASSED                                 [100% ]

Если вы хотите проверить сообщение об ошибке слишком:

import pytest

from pytest_exception_handle import divide


def test_zero_division():
    assert divide(12, 3) == 4
The pytest framework makes it easy to write small tests, yet scales to support complex functional testing for applications and libraries. One of the advantages of pytest over the unittest module is that we don't need to use different assert methods on different data structures. So I'd rather use pytest. A good test suite should test the expected behaviour both when the input is correct and also when the input triggers some exception.


def test_zero_division_exception():
    with pytest.raises(ValueError):
        assert divide(1, 0)


def test_zero_division_exception_with_message():
    with pytest.raises(ValueError, match="Cannot divide by Zero"):
        assert divide(1, 0)

И да, нам не нужен дополнительный ValueError Исключение Для «Ошибки нуля деления» с Python Уже есть встроенный:

import pytest


def test_zero_division_builtin():
    with pytest.raises(ZeroDivisionError):
        assert 1/0

Оригинал: “https://dev.to/serhatteker/pytest-exceptions-part-i-19k1”